(function webpackUniversalModuleDefinition(root, factory) {
  if (typeof exports === "object" && typeof module === "object")
    module.exports = factory();
  else if (typeof define === "function" && define.amd) define([], factory);
  else if (typeof exports === "object") exports["index"] = factory();
  else root["index"] = factory();
})(typeof self !== "undefined" ? self : this, function () {
  return /******/ (function (modules) {
    // webpackBootstrap
    /******/ // The module cache
    /******/ var installedModules = {};
    /******/
    /******/ // The require function
    /******/ function __webpack_require__(moduleId) {
      /******/
      /******/ // Check if module is in cache
      /******/ if (installedModules[moduleId]) {
        /******/ return installedModules[moduleId].exports;
        /******/
      }
      /******/ // Create a new module (and put it into the cache)
      /******/ var module = (installedModules[moduleId] = {
        /******/ i: moduleId,
        /******/ l: false,
        /******/ exports: {},
        /******/
      });
      /******/
      /******/ // Execute the module function
      /******/ modules[moduleId].call(
        module.exports,
        module,
        module.exports,
        __webpack_require__
      );
      /******/
      /******/ // Flag the module as loaded
      /******/ module.l = true;
      /******/
      /******/ // Return the exports of the module
      /******/ return module.exports;
      /******/
    }
    /******/
    /******/
    /******/ // expose the modules object (__webpack_modules__)
    /******/ __webpack_require__.m = modules;
    /******/
    /******/ // expose the module cache
    /******/ __webpack_require__.c = installedModules;
    /******/
    /******/ // define getter function for harmony exports
    /******/ __webpack_require__.d = function (exports, name, getter) {
      /******/ if (!__webpack_require__.o(exports, name)) {
        /******/ Object.defineProperty(exports, name, {
          enumerable: true,
          get: getter,
        });
        /******/
      }
      /******/
    };
    /******/
    /******/ // define __esModule on exports
    /******/ __webpack_require__.r = function (exports) {
      /******/ if (typeof Symbol !== "undefined" && Symbol.toStringTag) {
        /******/ Object.defineProperty(exports, Symbol.toStringTag, {
          value: "Module",
        });
        /******/
      }
      /******/ Object.defineProperty(exports, "__esModule", { value: true });
      /******/
    };
    /******/
    /******/ // create a fake namespace object
    /******/ // mode & 1: value is a module id, require it
    /******/ // mode & 2: merge all properties of value into the ns
    /******/ // mode & 4: return value when already ns object
    /******/ // mode & 8|1: behave like require
    /******/ __webpack_require__.t = function (value, mode) {
      /******/ if (mode & 1) value = __webpack_require__(value);
      /******/ if (mode & 8) return value;
      /******/ if (
        mode & 4 &&
        typeof value === "object" &&
        value &&
        value.__esModule
      )
        return value;
      /******/ var ns = Object.create(null);
      /******/ __webpack_require__.r(ns);
      /******/ Object.defineProperty(ns, "default", {
        enumerable: true,
        value: value,
      });
      /******/ if (mode & 2 && typeof value != "string")
        for (var key in value)
          __webpack_require__.d(
            ns,
            key,
            function (key) {
              return value[key];
            }.bind(null, key)
          );
      /******/ return ns;
      /******/
    };
    /******/
    /******/ // getDefaultExport function for compatibility with non-harmony modules
    /******/ __webpack_require__.n = function (module) {
      /******/ var getter =
        module && module.__esModule
          ? /******/ function getDefault() {
              return module["default"];
            }
          : /******/ function getModuleExports() {
              return module;
            };
      /******/ __webpack_require__.d(getter, "a", getter);
      /******/ return getter;
      /******/
    };
    /******/
    /******/ // Object.prototype.hasOwnProperty.call
    /******/ __webpack_require__.o = function (object, property) {
      return Object.prototype.hasOwnProperty.call(object, property);
    };
    /******/
    /******/ // __webpack_public_path__
    /******/ __webpack_require__.p = "";
    /******/
    /******/
    /******/ // Load entry module and return exports
    /******/ return __webpack_require__((__webpack_require__.s = "fb15"));
    /******/
  })(
    /************************************************************************/
    /******/ {
      /***/ "01f9": /***/ function (module, exports, __webpack_require__) {
        "use strict";

        var LIBRARY = __webpack_require__("2d00");
        var $export = __webpack_require__("5ca1");
        var redefine = __webpack_require__("2aba");
        var hide = __webpack_require__("32e9");
        var Iterators = __webpack_require__("84f2");
        var $iterCreate = __webpack_require__("41a0");
        var setToStringTag = __webpack_require__("7f20");
        var getPrototypeOf = __webpack_require__("38fd");
        var ITERATOR = __webpack_require__("2b4c")("iterator");
        var BUGGY = !([].keys && "next" in [].keys()); // Safari has buggy iterators w/o `next`
        var FF_ITERATOR = "@@iterator";
        var KEYS = "keys";
        var VALUES = "values";

        var returnThis = function () {
          return this;
        };

        module.exports = function (
          Base,
          NAME,
          Constructor,
          next,
          DEFAULT,
          IS_SET,
          FORCED
        ) {
          $iterCreate(Constructor, NAME, next);
          var getMethod = function (kind) {
            if (!BUGGY && kind in proto) return proto[kind];
            switch (kind) {
              case KEYS:
                return function keys() {
                  return new Constructor(this, kind);
                };
              case VALUES:
                return function values() {
                  return new Constructor(this, kind);
                };
            }
            return function entries() {
              return new Constructor(this, kind);
            };
          };
          var TAG = NAME + " Iterator";
          var DEF_VALUES = DEFAULT == VALUES;
          var VALUES_BUG = false;
          var proto = Base.prototype;
          var $native =
            proto[ITERATOR] ||
            proto[FF_ITERATOR] ||
            (DEFAULT && proto[DEFAULT]);
          var $default = $native || getMethod(DEFAULT);
          var $entries = DEFAULT
            ? !DEF_VALUES
              ? $default
              : getMethod("entries")
            : undefined;
          var $anyNative = NAME == "Array" ? proto.entries || $native : $native;
          var methods, key, IteratorPrototype;
          // Fix native
          if ($anyNative) {
            IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
            if (
              IteratorPrototype !== Object.prototype &&
              IteratorPrototype.next
            ) {
              // Set @@toStringTag to native iterators
              setToStringTag(IteratorPrototype, TAG, true);
              // fix for some old engines
              if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != "function")
                hide(IteratorPrototype, ITERATOR, returnThis);
            }
          }
          // fix Array#{values, @@iterator}.name in V8 / FF
          if (DEF_VALUES && $native && $native.name !== VALUES) {
            VALUES_BUG = true;
            $default = function values() {
              return $native.call(this);
            };
          }
          // Define iterator
          if (
            (!LIBRARY || FORCED) &&
            (BUGGY || VALUES_BUG || !proto[ITERATOR])
          ) {
            hide(proto, ITERATOR, $default);
          }
          // Plug for library
          Iterators[NAME] = $default;
          Iterators[TAG] = returnThis;
          if (DEFAULT) {
            methods = {
              values: DEF_VALUES ? $default : getMethod(VALUES),
              keys: IS_SET ? $default : getMethod(KEYS),
              entries: $entries,
            };
            if (FORCED)
              for (key in methods) {
                if (!(key in proto)) redefine(proto, key, methods[key]);
              }
            else
              $export(
                $export.P + $export.F * (BUGGY || VALUES_BUG),
                NAME,
                methods
              );
          }
          return methods;
        };

        /***/
      },

      /***/ "02f4": /***/ function (module, exports, __webpack_require__) {
        var toInteger = __webpack_require__("4588");
        var defined = __webpack_require__("be13");
        // true  -> String#at
        // false -> String#codePointAt
        module.exports = function (TO_STRING) {
          return function (that, pos) {
            var s = String(defined(that));
            var i = toInteger(pos);
            var l = s.length;
            var a, b;
            if (i < 0 || i >= l) return TO_STRING ? "" : undefined;
            a = s.charCodeAt(i);
            return a < 0xd800 ||
              a > 0xdbff ||
              i + 1 === l ||
              (b = s.charCodeAt(i + 1)) < 0xdc00 ||
              b > 0xdfff
              ? TO_STRING
                ? s.charAt(i)
                : a
              : TO_STRING
              ? s.slice(i, i + 2)
              : ((a - 0xd800) << 10) + (b - 0xdc00) + 0x10000;
          };
        };

        /***/
      },

      /***/ "0390": /***/ function (module, exports, __webpack_require__) {
        "use strict";

        var at = __webpack_require__("02f4")(true);

        // `AdvanceStringIndex` abstract operation
        // https://tc39.github.io/ecma262/#sec-advancestringindex
        module.exports = function (S, index, unicode) {
          return index + (unicode ? at(S, index).length : 1);
        };

        /***/
      },

      /***/ "0a49": /***/ function (module, exports, __webpack_require__) {
        // 0 -> Array#forEach
        // 1 -> Array#map
        // 2 -> Array#filter
        // 3 -> Array#some
        // 4 -> Array#every
        // 5 -> Array#find
        // 6 -> Array#findIndex
        var ctx = __webpack_require__("9b43");
        var IObject = __webpack_require__("626a");
        var toObject = __webpack_require__("4bf8");
        var toLength = __webpack_require__("9def");
        var asc = __webpack_require__("cd1c");
        module.exports = function (TYPE, $create) {
          var IS_MAP = TYPE == 1;
          var IS_FILTER = TYPE == 2;
          var IS_SOME = TYPE == 3;
          var IS_EVERY = TYPE == 4;
          var IS_FIND_INDEX = TYPE == 6;
          var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
          var create = $create || asc;
          return function ($this, callbackfn, that) {
            var O = toObject($this);
            var self = IObject(O);
            var f = ctx(callbackfn, that, 3);
            var length = toLength(self.length);
            var index = 0;
            var result = IS_MAP
              ? create($this, length)
              : IS_FILTER
              ? create($this, 0)
              : undefined;
            var val, res;
            for (; length > index; index++)
              if (NO_HOLES || index in self) {
                val = self[index];
                res = f(val, index, O);
                if (TYPE) {
                  if (IS_MAP) result[index] = res; // map
                  else if (res)
                    switch (TYPE) {
                      case 3:
                        return true; // some
                      case 5:
                        return val; // find
                      case 6:
                        return index; // findIndex
                      case 2:
                        result.push(val); // filter
                    }
                  else if (IS_EVERY) return false; // every
                }
              }
            return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
          };
        };

        /***/
      },

      /***/ "0bfb": /***/ function (module, exports, __webpack_require__) {
        "use strict";

        // 21.2.5.3 get RegExp.prototype.flags
        var anObject = __webpack_require__("cb7c");
        module.exports = function () {
          var that = anObject(this);
          var result = "";
          if (that.global) result += "g";
          if (that.ignoreCase) result += "i";
          if (that.multiline) result += "m";
          if (that.unicode) result += "u";
          if (that.sticky) result += "y";
          return result;
        };

        /***/
      },

      /***/ "0d58": /***/ function (module, exports, __webpack_require__) {
        // 19.1.2.14 / 15.2.3.14 Object.keys(O)
        var $keys = __webpack_require__("ce10");
        var enumBugKeys = __webpack_require__("e11e");

        module.exports =
          Object.keys ||
          function keys(O) {
            return $keys(O, enumBugKeys);
          };

        /***/
      },

      /***/ 1169: /***/ function (module, exports, __webpack_require__) {
        // 7.2.2 IsArray(argument)
        var cof = __webpack_require__("2d95");
        module.exports =
          Array.isArray ||
          function isArray(arg) {
            return cof(arg) == "Array";
          };

        /***/
      },

      /***/ "117e": /***/ function (module, exports, __webpack_require__) {
        // extracted by mini-css-extract-plugin
        /***/
      },

      /***/ "11e9": /***/ function (module, exports, __webpack_require__) {
        var pIE = __webpack_require__("52a7");
        var createDesc = __webpack_require__("4630");
        var toIObject = __webpack_require__("6821");
        var toPrimitive = __webpack_require__("6a99");
        var has = __webpack_require__("69a8");
        var IE8_DOM_DEFINE = __webpack_require__("c69a");
        var gOPD = Object.getOwnPropertyDescriptor;

        exports.f = __webpack_require__("9e1e")
          ? gOPD
          : function getOwnPropertyDescriptor(O, P) {
              O = toIObject(O);
              P = toPrimitive(P, true);
              if (IE8_DOM_DEFINE)
                try {
                  return gOPD(O, P);
                } catch (e) {
                  /* empty */
                }
              if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
            };

        /***/
      },

      /***/ 1495: /***/ function (module, exports, __webpack_require__) {
        var dP = __webpack_require__("86cc");
        var anObject = __webpack_require__("cb7c");
        var getKeys = __webpack_require__("0d58");

        module.exports = __webpack_require__("9e1e")
          ? Object.defineProperties
          : function defineProperties(O, Properties) {
              anObject(O);
              var keys = getKeys(Properties);
              var length = keys.length;
              var i = 0;
              var P;
              while (length > i) dP.f(O, (P = keys[i++]), Properties[P]);
              return O;
            };

        /***/
      },

      /***/ "1c4c": /***/ function (module, exports, __webpack_require__) {
        "use strict";

        var ctx = __webpack_require__("9b43");
        var $export = __webpack_require__("5ca1");
        var toObject = __webpack_require__("4bf8");
        var call = __webpack_require__("1fa8");
        var isArrayIter = __webpack_require__("33a4");
        var toLength = __webpack_require__("9def");
        var createProperty = __webpack_require__("f1ae");
        var getIterFn = __webpack_require__("27ee");

        $export(
          $export.S +
            $export.F *
              !__webpack_require__("5cc5")(function (iter) {
                Array.from(iter);
              }),
          "Array",
          {
            // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
            from: function from(
              arrayLike /* , mapfn = undefined, thisArg = undefined */
            ) {
              var O = toObject(arrayLike);
              var C = typeof this == "function" ? this : Array;
              var aLen = arguments.length;
              var mapfn = aLen > 1 ? arguments[1] : undefined;
              var mapping = mapfn !== undefined;
              var index = 0;
              var iterFn = getIterFn(O);
              var length, result, step, iterator;
              if (mapping)
                mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
              // if object isn't iterable or it's array with default iterator - use simple case
              if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {
                for (
                  iterator = iterFn.call(O), result = new C();
                  !(step = iterator.next()).done;
                  index++
                ) {
                  createProperty(
                    result,
                    index,
                    mapping
                      ? call(iterator, mapfn, [step.value, index], true)
                      : step.value
                  );
                }
              } else {
                length = toLength(O.length);
                for (result = new C(length); length > index; index++) {
                  createProperty(
                    result,
                    index,
                    mapping ? mapfn(O[index], index) : O[index]
                  );
                }
              }
              result.length = index;
              return result;
            },
          }
        );

        /***/
      },

      /***/ "1fa8": /***/ function (module, exports, __webpack_require__) {
        // call something on iterator step with safe closing on error
        var anObject = __webpack_require__("cb7c");
        module.exports = function (iterator, fn, value, entries) {
          try {
            return entries ? fn(anObject(value)[0], value[1]) : fn(value);
            // 7.4.6 IteratorClose(iterator, completion)
          } catch (e) {
            var ret = iterator["return"];
            if (ret !== undefined) anObject(ret.call(iterator));
            throw e;
          }
        };

        /***/
      },

      /***/ "20d6": /***/ function (module, exports, __webpack_require__) {
        "use strict";

        // 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)
        var $export = __webpack_require__("5ca1");
        var $find = __webpack_require__("0a49")(6);
        var KEY = "findIndex";
        var forced = true;
        // Shouldn't skip holes
        if (KEY in [])
          Array(1)[KEY](function () {
            forced = false;
          });
        $export($export.P + $export.F * forced, "Array", {
          findIndex: function findIndex(callbackfn /* , that = undefined */) {
            return $find(
              this,
              callbackfn,
              arguments.length > 1 ? arguments[1] : undefined
            );
          },
        });
        __webpack_require__("9c6c")(KEY);

        /***/
      },

      /***/ "214f": /***/ function (module, exports, __webpack_require__) {
        "use strict";

        __webpack_require__("b0c5");
        var redefine = __webpack_require__("2aba");
        var hide = __webpack_require__("32e9");
        var fails = __webpack_require__("79e5");
        var defined = __webpack_require__("be13");
        var wks = __webpack_require__("2b4c");
        var regexpExec = __webpack_require__("520a");

        var SPECIES = wks("species");

        var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {
          // #replace needs built-in support for named groups.
          // #match works fine because it just return the exec results, even if it has
          // a "grops" property.
          var re = /./;
          re.exec = function () {
            var result = [];
            result.groups = { a: "7" };
            return result;
          };
          return "".replace(re, "$<a>") !== "7";
        });

        var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {
          // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec
          var re = /(?:)/;
          var originalExec = re.exec;
          re.exec = function () {
            return originalExec.apply(this, arguments);
          };
          var result = "ab".split(re);
          return result.length === 2 && result[0] === "a" && result[1] === "b";
        })();

        module.exports = function (KEY, length, exec) {
          var SYMBOL = wks(KEY);

          var DELEGATES_TO_SYMBOL = !fails(function () {
            // String methods call symbol-named RegEp methods
            var O = {};
            O[SYMBOL] = function () {
              return 7;
            };
            return ""[KEY](O) != 7;
          });

          var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL
            ? !fails(function () {
                // Symbol-named RegExp methods call .exec
                var execCalled = false;
                var re = /a/;
                re.exec = function () {
                  execCalled = true;
                  return null;
                };
                if (KEY === "split") {
                  // RegExp[@@split] doesn't call the regex's exec method, but first creates
                  // a new one. We need to return the patched regex when creating the new one.
                  re.constructor = {};
                  re.constructor[SPECIES] = function () {
                    return re;
                  };
                }
                re[SYMBOL]("");
                return !execCalled;
              })
            : undefined;

          if (
            !DELEGATES_TO_SYMBOL ||
            !DELEGATES_TO_EXEC ||
            (KEY === "replace" && !REPLACE_SUPPORTS_NAMED_GROUPS) ||
            (KEY === "split" && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)
          ) {
            var nativeRegExpMethod = /./[SYMBOL];
            var fns = exec(
              defined,
              SYMBOL,
              ""[KEY],
              function maybeCallNative(
                nativeMethod,
                regexp,
                str,
                arg2,
                forceStringMethod
              ) {
                if (regexp.exec === regexpExec) {
                  if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
                    // The native String method already delegates to @@method (this
                    // polyfilled function), leasing to infinite recursion.
                    // We avoid it by directly calling the native @@method method.
                    return {
                      done: true,
                      value: nativeRegExpMethod.call(regexp, str, arg2),
                    };
                  }
                  return {
                    done: true,
                    value: nativeMethod.call(str, regexp, arg2),
                  };
                }
                return { done: false };
              }
            );
            var strfn = fns[0];
            var rxfn = fns[1];

            redefine(String.prototype, KEY, strfn);
            hide(
              RegExp.prototype,
              SYMBOL,
              length == 2
                ? // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)
                  // 21.2.5.11 RegExp.prototype[@@split](string, limit)
                  function (string, arg) {
                    return rxfn.call(string, this, arg);
                  }
                : // 21.2.5.6 RegExp.prototype[@@match](string)
                  // 21.2.5.9 RegExp.prototype[@@search](string)
                  function (string) {
                    return rxfn.call(string, this);
                  }
            );
          }
        };

        /***/
      },

      /***/ "230e": /***/ function (module, exports, __webpack_require__) {
        var isObject = __webpack_require__("d3f4");
        var document = __webpack_require__("7726").document;
        // typeof document.createElement is 'object' in old IE
        var is = isObject(document) && isObject(document.createElement);
        module.exports = function (it) {
          return is ? document.createElement(it) : {};
        };

        /***/
      },

      /***/ "23c6": /***/ function (module, exports, __webpack_require__) {
        // getting tag from 19.1.3.6 Object.prototype.toString()
        var cof = __webpack_require__("2d95");
        var TAG = __webpack_require__("2b4c")("toStringTag");
        // ES3 wrong here
        var ARG =
          cof(
            (function () {
              return arguments;
            })()
          ) == "Arguments";

        // fallback for IE11 Script Access Denied error
        var tryGet = function (it, key) {
          try {
            return it[key];
          } catch (e) {
            /* empty */
          }
        };

        module.exports = function (it) {
          var O, T, B;
          return it === undefined
            ? "Undefined"
            : it === null
            ? "Null"
            : // @@toStringTag case
            typeof (T = tryGet((O = Object(it)), TAG)) == "string"
            ? T
            : // builtinTag case
            ARG
            ? cof(O)
            : // ES3 arguments fallback
            (B = cof(O)) == "Object" && typeof O.callee == "function"
            ? "Arguments"
            : B;
        };

        /***/
      },

      /***/ 2621: /***/ function (module, exports) {
        exports.f = Object.getOwnPropertySymbols;

        /***/
      },

      /***/ 2638: /***/ function (module, exports, __webpack_require__) {
        "use strict";
        function _extends() {
          return (
            (_extends = Object.assign
              ? Object.assign.bind()
              : function (a) {
                  for (var b, c = 1; c < arguments.length; c++)
                    for (var d in ((b = arguments[c]), b))
                      Object.prototype.hasOwnProperty.call(b, d) &&
                        (a[d] = b[d]);
                  return a;
                }),
            _extends.apply(this, arguments)
          );
        }
        var normalMerge = ["attrs", "props", "domProps"],
          toArrayMerge = ["class", "style", "directives"],
          functionalMerge = ["on", "nativeOn"],
          mergeJsxProps = function (a) {
            return a.reduce(function (c, a) {
              for (var b in a)
                if (!c[b]) c[b] = a[b];
                else if (-1 !== normalMerge.indexOf(b))
                  c[b] = _extends({}, c[b], a[b]);
                else if (-1 !== toArrayMerge.indexOf(b)) {
                  var d = c[b] instanceof Array ? c[b] : [c[b]],
                    e = a[b] instanceof Array ? a[b] : [a[b]];
                  c[b] = [].concat(d, e);
                } else if (-1 !== functionalMerge.indexOf(b)) {
                  for (var f in a[b])
                    if (c[b][f]) {
                      var g = c[b][f] instanceof Array ? c[b][f] : [c[b][f]],
                        h = a[b][f] instanceof Array ? a[b][f] : [a[b][f]];
                      c[b][f] = [].concat(g, h);
                    } else c[b][f] = a[b][f];
                } else if ("hook" === b)
                  for (var i in a[b])
                    c[b][i] = c[b][i] ? mergeFn(c[b][i], a[b][i]) : a[b][i];
                else c[b] = a[b];
              return c;
            }, {});
          },
          mergeFn = function (a, b) {
            return function () {
              a && a.apply(this, arguments), b && b.apply(this, arguments);
            };
          };
        module.exports = mergeJsxProps;

        /***/
      },

      /***/ "27ee": /***/ function (module, exports, __webpack_require__) {
        var classof = __webpack_require__("23c6");
        var ITERATOR = __webpack_require__("2b4c")("iterator");
        var Iterators = __webpack_require__("84f2");
        module.exports = __webpack_require__("8378").getIteratorMethod =
          function (it) {
            if (it != undefined)
              return it[ITERATOR] || it["@@iterator"] || Iterators[classof(it)];
          };

        /***/
      },

      /***/ "2aba": /***/ function (module, exports, __webpack_require__) {
        var global = __webpack_require__("7726");
        var hide = __webpack_require__("32e9");
        var has = __webpack_require__("69a8");
        var SRC = __webpack_require__("ca5a")("src");
        var $toString = __webpack_require__("fa5b");
        var TO_STRING = "toString";
        var TPL = ("" + $toString).split(TO_STRING);

        __webpack_require__("8378").inspectSource = function (it) {
          return $toString.call(it);
        };

        (module.exports = function (O, key, val, safe) {
          var isFunction = typeof val == "function";
          if (isFunction) has(val, "name") || hide(val, "name", key);
          if (O[key] === val) return;
          if (isFunction)
            has(val, SRC) ||
              hide(val, SRC, O[key] ? "" + O[key] : TPL.join(String(key)));
          if (O === global) {
            O[key] = val;
          } else if (!safe) {
            delete O[key];
            hide(O, key, val);
          } else if (O[key]) {
            O[key] = val;
          } else {
            hide(O, key, val);
          }
          // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
        })(Function.prototype, TO_STRING, function toString() {
          return (
            (typeof this == "function" && this[SRC]) || $toString.call(this)
          );
        });

        /***/
      },

      /***/ "2aeb": /***/ function (module, exports, __webpack_require__) {
        // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
        var anObject = __webpack_require__("cb7c");
        var dPs = __webpack_require__("1495");
        var enumBugKeys = __webpack_require__("e11e");
        var IE_PROTO = __webpack_require__("613b")("IE_PROTO");
        var Empty = function () {
          /* empty */
        };
        var PROTOTYPE = "prototype";

        // Create object with fake `null` prototype: use iframe Object with cleared prototype
        var createDict = function () {
          // Thrash, waste and sodomy: IE GC bug
          var iframe = __webpack_require__("230e")("iframe");
          var i = enumBugKeys.length;
          var lt = "<";
          var gt = ">";
          var iframeDocument;
          iframe.style.display = "none";
          __webpack_require__("fab2").appendChild(iframe);
          iframe.src = "javascript:"; // eslint-disable-line no-script-url
          // createDict = iframe.contentWindow.Object;
          // html.removeChild(iframe);
          iframeDocument = iframe.contentWindow.document;
          iframeDocument.open();
          iframeDocument.write(
            lt + "script" + gt + "document.F=Object" + lt + "/script" + gt
          );
          iframeDocument.close();
          createDict = iframeDocument.F;
          while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
          return createDict();
        };

        module.exports =
          Object.create ||
          function create(O, Properties) {
            var result;
            if (O !== null) {
              Empty[PROTOTYPE] = anObject(O);
              result = new Empty();
              Empty[PROTOTYPE] = null;
              // add "__proto__" for Object.getPrototypeOf polyfill
              result[IE_PROTO] = O;
            } else result = createDict();
            return Properties === undefined ? result : dPs(result, Properties);
          };

        /***/
      },

      /***/ "2b4c": /***/ function (module, exports, __webpack_require__) {
        var store = __webpack_require__("5537")("wks");
        var uid = __webpack_require__("ca5a");
        var Symbol = __webpack_require__("7726").Symbol;
        var USE_SYMBOL = typeof Symbol == "function";

        var $exports = (module.exports = function (name) {
          return (
            store[name] ||
            (store[name] =
              (USE_SYMBOL && Symbol[name]) ||
              (USE_SYMBOL ? Symbol : uid)("Symbol." + name))
          );
        });

        $exports.store = store;

        /***/
      },

      /***/ "2d00": /***/ function (module, exports) {
        module.exports = false;

        /***/
      },

      /***/ "2d95": /***/ function (module, exports) {
        var toString = {}.toString;

        module.exports = function (it) {
          return toString.call(it).slice(8, -1);
        };

        /***/
      },

      /***/ "2f21": /***/ function (module, exports, __webpack_require__) {
        "use strict";

        var fails = __webpack_require__("79e5");

        module.exports = function (method, arg) {
          return (
            !!method &&
            fails(function () {
              // eslint-disable-next-line no-useless-call
              arg
                ? method.call(
                    null,
                    function () {
                      /* empty */
                    },
                    1
                  )
                : method.call(null);
            })
          );
        };

        /***/
      },

      /***/ "2fdb": /***/ function (module, exports, __webpack_require__) {
        "use strict";
        // 21.1.3.7 String.prototype.includes(searchString, position = 0)

        var $export = __webpack_require__("5ca1");
        var context = __webpack_require__("d2c8");
        var INCLUDES = "includes";

        $export(
          $export.P + $export.F * __webpack_require__("5147")(INCLUDES),
          "String",
          {
            includes: function includes(searchString /* , position = 0 */) {
              return !!~context(this, searchString, INCLUDES).indexOf(
                searchString,
                arguments.length > 1 ? arguments[1] : undefined
              );
            },
          }
        );

        /***/
      },

      /***/ "323d": /***/ function (module, exports, __webpack_require__) {
        // extracted by mini-css-extract-plugin
        /***/
      },

      /***/ "32e9": /***/ function (module, exports, __webpack_require__) {
        var dP = __webpack_require__("86cc");
        var createDesc = __webpack_require__("4630");
        module.exports = __webpack_require__("9e1e")
          ? function (object, key, value) {
              return dP.f(object, key, createDesc(1, value));
            }
          : function (object, key, value) {
              object[key] = value;
              return object;
            };

        /***/
      },

      /***/ "33a4": /***/ function (module, exports, __webpack_require__) {
        // check on default Array iterator
        var Iterators = __webpack_require__("84f2");
        var ITERATOR = __webpack_require__("2b4c")("iterator");
        var ArrayProto = Array.prototype;

        module.exports = function (it) {
          return (
            it !== undefined &&
            (Iterators.Array === it || ArrayProto[ITERATOR] === it)
          );
        };

        /***/
      },

      /***/ 3846: /***/ function (module, exports, __webpack_require__) {
        // 21.2.5.3 get RegExp.prototype.flags()
        if (__webpack_require__("9e1e") && /./g.flags != "g")
          __webpack_require__("86cc").f(RegExp.prototype, "flags", {
            configurable: true,
            get: __webpack_require__("0bfb"),
          });

        /***/
      },

      /***/ "38fd": /***/ function (module, exports, __webpack_require__) {
        // 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
        var has = __webpack_require__("69a8");
        var toObject = __webpack_require__("4bf8");
        var IE_PROTO = __webpack_require__("613b")("IE_PROTO");
        var ObjectProto = Object.prototype;

        module.exports =
          Object.getPrototypeOf ||
          function (O) {
            O = toObject(O);
            if (has(O, IE_PROTO)) return O[IE_PROTO];
            if (
              typeof O.constructor == "function" &&
              O instanceof O.constructor
            ) {
              return O.constructor.prototype;
            }
            return O instanceof Object ? ObjectProto : null;
          };

        /***/
      },

      /***/ "3b2b": /***/ function (module, exports, __webpack_require__) {
        var global = __webpack_require__("7726");
        var inheritIfRequired = __webpack_require__("5dbc");
        var dP = __webpack_require__("86cc").f;
        var gOPN = __webpack_require__("9093").f;
        var isRegExp = __webpack_require__("aae3");
        var $flags = __webpack_require__("0bfb");
        var $RegExp = global.RegExp;
        var Base = $RegExp;
        var proto = $RegExp.prototype;
        var re1 = /a/g;
        var re2 = /a/g;
        // "new" creates a new object, old webkit buggy here
        var CORRECT_NEW = new $RegExp(re1) !== re1;

        if (
          __webpack_require__("9e1e") &&
          (!CORRECT_NEW ||
            __webpack_require__("79e5")(function () {
              re2[__webpack_require__("2b4c")("match")] = false;
              // RegExp constructor can alter flags and IsRegExp works correct with @@match
              return (
                $RegExp(re1) != re1 ||
                $RegExp(re2) == re2 ||
                $RegExp(re1, "i") != "/a/i"
              );
            }))
        ) {
          $RegExp = function RegExp(p, f) {
            var tiRE = this instanceof $RegExp;
            var piRE = isRegExp(p);
            var fiU = f === undefined;
            return !tiRE && piRE && p.constructor === $RegExp && fiU
              ? p
              : inheritIfRequired(
                  CORRECT_NEW
                    ? new Base(piRE && !fiU ? p.source : p, f)
                    : Base(
                        (piRE = p instanceof $RegExp) ? p.source : p,
                        piRE && fiU ? $flags.call(p) : f
                      ),
                  tiRE ? this : proto,
                  $RegExp
                );
          };
          var proxy = function (key) {
            key in $RegExp ||
              dP($RegExp, key, {
                configurable: true,
                get: function () {
                  return Base[key];
                },
                set: function (it) {
                  Base[key] = it;
                },
              });
          };
          for (var keys = gOPN(Base), i = 0; keys.length > i; )
            proxy(keys[i++]);
          proto.constructor = $RegExp;
          $RegExp.prototype = proto;
          __webpack_require__("2aba")(global, "RegExp", $RegExp);
        }

        __webpack_require__("7a56")("RegExp");

        /***/
      },

      /***/ "3bcf": /***/ function (module, exports, __webpack_require__) {
        // extracted by mini-css-extract-plugin
        /***/
      },

      /***/ "41a0": /***/ function (module, exports, __webpack_require__) {
        "use strict";

        var create = __webpack_require__("2aeb");
        var descriptor = __webpack_require__("4630");
        var setToStringTag = __webpack_require__("7f20");
        var IteratorPrototype = {};

        // 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
        __webpack_require__("32e9")(
          IteratorPrototype,
          __webpack_require__("2b4c")("iterator"),
          function () {
            return this;
          }
        );

        module.exports = function (Constructor, NAME, next) {
          Constructor.prototype = create(IteratorPrototype, {
            next: descriptor(1, next),
          });
          setToStringTag(Constructor, NAME + " Iterator");
        };

        /***/
      },

      /***/ "456d": /***/ function (module, exports, __webpack_require__) {
        // 19.1.2.14 Object.keys(O)
        var toObject = __webpack_require__("4bf8");
        var $keys = __webpack_require__("0d58");

        __webpack_require__("5eda")("keys", function () {
          return function keys(it) {
            return $keys(toObject(it));
          };
        });

        /***/
      },

      /***/ 4588: /***/ function (module, exports) {
        // 7.1.4 ToInteger
        var ceil = Math.ceil;
        var floor = Math.floor;
        module.exports = function (it) {
          return isNaN((it = +it)) ? 0 : (it > 0 ? floor : ceil)(it);
        };

        /***/
      },

      /***/ 4630: /***/ function (module, exports) {
        module.exports = function (bitmap, value) {
          return {
            enumerable: !(bitmap & 1),
            configurable: !(bitmap & 2),
            writable: !(bitmap & 4),
            value: value,
          };
        };

        /***/
      },

      /***/ "4bf8": /***/ function (module, exports, __webpack_require__) {
        // 7.1.13 ToObject(argument)
        var defined = __webpack_require__("be13");
        module.exports = function (it) {
          return Object(defined(it));
        };

        /***/
      },

      /***/ "4c77": /***/ function (
        module,
        __webpack_exports__,
        __webpack_require__
      ) {
        "use strict";
        /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_basic_vue_vue_type_style_index_0_id_728e23e7_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0__ =
          __webpack_require__("d6f8");
        /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_basic_vue_vue_type_style_index_0_id_728e23e7_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0___default =
          /*#__PURE__*/ __webpack_require__.n(
            _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_basic_vue_vue_type_style_index_0_id_728e23e7_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0__
          );
        /* unused harmony reexport * */

        /***/
      },

      /***/ "504c": /***/ function (module, exports, __webpack_require__) {
        var DESCRIPTORS = __webpack_require__("9e1e");
        var getKeys = __webpack_require__("0d58");
        var toIObject = __webpack_require__("6821");
        var isEnum = __webpack_require__("52a7").f;
        module.exports = function (isEntries) {
          return function (it) {
            var O = toIObject(it);
            var keys = getKeys(O);
            var length = keys.length;
            var i = 0;
            var result = [];
            var key;
            while (length > i) {
              key = keys[i++];
              if (!DESCRIPTORS || isEnum.call(O, key)) {
                result.push(isEntries ? [key, O[key]] : O[key]);
              }
            }
            return result;
          };
        };

        /***/
      },

      /***/ 5147: /***/ function (module, exports, __webpack_require__) {
        var MATCH = __webpack_require__("2b4c")("match");
        module.exports = function (KEY) {
          var re = /./;
          try {
            "/./"[KEY](re);
          } catch (e) {
            try {
              re[MATCH] = false;
              return !"/./"[KEY](re);
            } catch (f) {
              /* empty */
            }
          }
          return true;
        };

        /***/
      },

      /***/ "520a": /***/ function (module, exports, __webpack_require__) {
        "use strict";

        var regexpFlags = __webpack_require__("0bfb");

        var nativeExec = RegExp.prototype.exec;
        // This always refers to the native implementation, because the
        // String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,
        // which loads this file before patching the method.
        var nativeReplace = String.prototype.replace;

        var patchedExec = nativeExec;

        var LAST_INDEX = "lastIndex";

        var UPDATES_LAST_INDEX_WRONG = (function () {
          var re1 = /a/,
            re2 = /b*/g;
          nativeExec.call(re1, "a");
          nativeExec.call(re2, "a");
          return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;
        })();

        // nonparticipating capturing group, copied from es5-shim's String#split patch.
        var NPCG_INCLUDED = /()??/.exec("")[1] !== undefined;

        var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;

        if (PATCH) {
          patchedExec = function exec(str) {
            var re = this;
            var lastIndex, reCopy, match, i;

            if (NPCG_INCLUDED) {
              reCopy = new RegExp(
                "^" + re.source + "$(?!\\s)",
                regexpFlags.call(re)
              );
            }
            if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];

            match = nativeExec.call(re, str);

            if (UPDATES_LAST_INDEX_WRONG && match) {
              re[LAST_INDEX] = re.global
                ? match.index + match[0].length
                : lastIndex;
            }
            if (NPCG_INCLUDED && match && match.length > 1) {
              // Fix browsers whose `exec` methods don't consistently return `undefined`
              // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/
              // eslint-disable-next-line no-loop-func
              nativeReplace.call(match[0], reCopy, function () {
                for (i = 1; i < arguments.length - 2; i++) {
                  if (arguments[i] === undefined) match[i] = undefined;
                }
              });
            }

            return match;
          };
        }

        module.exports = patchedExec;

        /***/
      },

      /***/ "52a7": /***/ function (module, exports) {
        exports.f = {}.propertyIsEnumerable;

        /***/
      },

      /***/ 5537: /***/ function (module, exports, __webpack_require__) {
        var core = __webpack_require__("8378");
        var global = __webpack_require__("7726");
        var SHARED = "__core-js_shared__";
        var store = global[SHARED] || (global[SHARED] = {});

        (module.exports = function (key, value) {
          return store[key] || (store[key] = value !== undefined ? value : {});
        })("versions", []).push({
          version: core.version,
          mode: __webpack_require__("2d00") ? "pure" : "global",
          copyright: "© 2020 Denis Pushkarev (zloirock.ru)",
        });

        /***/
      },

      /***/ "55dd": /***/ function (module, exports, __webpack_require__) {
        "use strict";

        var $export = __webpack_require__("5ca1");
        var aFunction = __webpack_require__("d8e8");
        var toObject = __webpack_require__("4bf8");
        var fails = __webpack_require__("79e5");
        var $sort = [].sort;
        var test = [1, 2, 3];

        $export(
          $export.P +
            $export.F *
              (fails(function () {
                // IE8-
                test.sort(undefined);
              }) ||
                !fails(function () {
                  // V8 bug
                  test.sort(null);
                  // Old WebKit
                }) ||
                !__webpack_require__("2f21")($sort)),
          "Array",
          {
            // 22.1.3.25 Array.prototype.sort(comparefn)
            sort: function sort(comparefn) {
              return comparefn === undefined
                ? $sort.call(toObject(this))
                : $sort.call(toObject(this), aFunction(comparefn));
            },
          }
        );

        /***/
      },

      /***/ 5778: /***/ function (
        module,
        __webpack_exports__,
        __webpack_require__
      ) {
        "use strict";
        /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_text_vue_vue_type_style_index_0_id_fc6d50a4_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0__ =
          __webpack_require__("80be");
        /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_text_vue_vue_type_style_index_0_id_fc6d50a4_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0___default =
          /*#__PURE__*/ __webpack_require__.n(
            _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_text_vue_vue_type_style_index_0_id_fc6d50a4_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0__
          );
        /* unused harmony reexport * */

        /***/
      },

      /***/ "5ca1": /***/ function (module, exports, __webpack_require__) {
        var global = __webpack_require__("7726");
        var core = __webpack_require__("8378");
        var hide = __webpack_require__("32e9");
        var redefine = __webpack_require__("2aba");
        var ctx = __webpack_require__("9b43");
        var PROTOTYPE = "prototype";

        var $export = function (type, name, source) {
          var IS_FORCED = type & $export.F;
          var IS_GLOBAL = type & $export.G;
          var IS_STATIC = type & $export.S;
          var IS_PROTO = type & $export.P;
          var IS_BIND = type & $export.B;
          var target = IS_GLOBAL
            ? global
            : IS_STATIC
            ? global[name] || (global[name] = {})
            : (global[name] || {})[PROTOTYPE];
          var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
          var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
          var key, own, out, exp;
          if (IS_GLOBAL) source = name;
          for (key in source) {
            // contains in native
            own = !IS_FORCED && target && target[key] !== undefined;
            // export native or passed
            out = (own ? target : source)[key];
            // bind timers to global for call from export context
            exp =
              IS_BIND && own
                ? ctx(out, global)
                : IS_PROTO && typeof out == "function"
                ? ctx(Function.call, out)
                : out;
            // extend global
            if (target) redefine(target, key, out, type & $export.U);
            // export
            if (exports[key] != out) hide(exports, key, exp);
            if (IS_PROTO && expProto[key] != out) expProto[key] = out;
          }
        };
        global.core = core;
        // type bitmap
        $export.F = 1; // forced
        $export.G = 2; // global
        $export.S = 4; // static
        $export.P = 8; // proto
        $export.B = 16; // bind
        $export.W = 32; // wrap
        $export.U = 64; // safe
        $export.R = 128; // real proto method for `library`
        module.exports = $export;

        /***/
      },

      /***/ "5cc5": /***/ function (module, exports, __webpack_require__) {
        var ITERATOR = __webpack_require__("2b4c")("iterator");
        var SAFE_CLOSING = false;

        try {
          var riter = [7][ITERATOR]();
          riter["return"] = function () {
            SAFE_CLOSING = true;
          };
          // eslint-disable-next-line no-throw-literal
          Array.from(riter, function () {
            throw 2;
          });
        } catch (e) {
          /* empty */
        }

        module.exports = function (exec, skipClosing) {
          if (!skipClosing && !SAFE_CLOSING) return false;
          var safe = false;
          try {
            var arr = [7];
            var iter = arr[ITERATOR]();
            iter.next = function () {
              return { done: (safe = true) };
            };
            arr[ITERATOR] = function () {
              return iter;
            };
            exec(arr);
          } catch (e) {
            /* empty */
          }
          return safe;
        };

        /***/
      },

      /***/ "5dbc": /***/ function (module, exports, __webpack_require__) {
        var isObject = __webpack_require__("d3f4");
        var setPrototypeOf = __webpack_require__("8b97").set;
        module.exports = function (that, target, C) {
          var S = target.constructor;
          var P;
          if (
            S !== C &&
            typeof S == "function" &&
            (P = S.prototype) !== C.prototype &&
            isObject(P) &&
            setPrototypeOf
          ) {
            setPrototypeOf(that, P);
          }
          return that;
        };

        /***/
      },

      /***/ "5df3": /***/ function (module, exports, __webpack_require__) {
        "use strict";

        var $at = __webpack_require__("02f4")(true);

        // 21.1.3.27 String.prototype[@@iterator]()
        __webpack_require__("01f9")(
          String,
          "String",
          function (iterated) {
            this._t = String(iterated); // target
            this._i = 0; // next index
            // 21.1.5.2.1 %StringIteratorPrototype%.next()
          },
          function () {
            var O = this._t;
            var index = this._i;
            var point;
            if (index >= O.length) return { value: undefined, done: true };
            point = $at(O, index);
            this._i += point.length;
            return { value: point, done: false };
          }
        );

        /***/
      },

      /***/ "5eda": /***/ function (module, exports, __webpack_require__) {
        // most Object methods by ES6 should accept primitives
        var $export = __webpack_require__("5ca1");
        var core = __webpack_require__("8378");
        var fails = __webpack_require__("79e5");
        module.exports = function (KEY, exec) {
          var fn = (core.Object || {})[KEY] || Object[KEY];
          var exp = {};
          exp[KEY] = exec(fn);
          $export(
            $export.S +
              $export.F *
                fails(function () {
                  fn(1);
                }),
            "Object",
            exp
          );
        };

        /***/
      },

      /***/ "5f1b": /***/ function (module, exports, __webpack_require__) {
        "use strict";

        var classof = __webpack_require__("23c6");
        var builtinExec = RegExp.prototype.exec;

        // `RegExpExec` abstract operation
        // https://tc39.github.io/ecma262/#sec-regexpexec
        module.exports = function (R, S) {
          var exec = R.exec;
          if (typeof exec === "function") {
            var result = exec.call(R, S);
            if (typeof result !== "object") {
              throw new TypeError(
                "RegExp exec method returned something other than an Object or null"
              );
            }
            return result;
          }
          if (classof(R) !== "RegExp") {
            throw new TypeError("RegExp#exec called on incompatible receiver");
          }
          return builtinExec.call(R, S);
        };

        /***/
      },

      /***/ "613b": /***/ function (module, exports, __webpack_require__) {
        var shared = __webpack_require__("5537")("keys");
        var uid = __webpack_require__("ca5a");
        module.exports = function (key) {
          return shared[key] || (shared[key] = uid(key));
        };

        /***/
      },

      /***/ "61c8": /***/ function (module, exports, __webpack_require__) {
        // extracted by mini-css-extract-plugin
        /***/
      },

      /***/ "626a": /***/ function (module, exports, __webpack_require__) {
        // fallback for non-array-like ES3 and non-enumerable old V8 strings
        var cof = __webpack_require__("2d95");
        // eslint-disable-next-line no-prototype-builtins
        module.exports = Object("z").propertyIsEnumerable(0)
          ? Object
          : function (it) {
              return cof(it) == "String" ? it.split("") : Object(it);
            };

        /***/
      },

      /***/ 6762: /***/ function (module, exports, __webpack_require__) {
        "use strict";

        // https://github.com/tc39/Array.prototype.includes
        var $export = __webpack_require__("5ca1");
        var $includes = __webpack_require__("c366")(true);

        $export($export.P, "Array", {
          includes: function includes(el /* , fromIndex = 0 */) {
            return $includes(
              this,
              el,
              arguments.length > 1 ? arguments[1] : undefined
            );
          },
        });

        __webpack_require__("9c6c")("includes");

        /***/
      },

      /***/ 6821: /***/ function (module, exports, __webpack_require__) {
        // to indexed object, toObject with fallback for non-array-like ES3 strings
        var IObject = __webpack_require__("626a");
        var defined = __webpack_require__("be13");
        module.exports = function (it) {
          return IObject(defined(it));
        };

        /***/
      },

      /***/ "69a8": /***/ function (module, exports) {
        var hasOwnProperty = {}.hasOwnProperty;
        module.exports = function (it, key) {
          return hasOwnProperty.call(it, key);
        };

        /***/
      },

      /***/ "69bb": /***/ function (
        module,
        __webpack_exports__,
        __webpack_require__
      ) {
        "use strict";
        /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tabs_vue_vue_type_style_index_0_id_5041e790_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0__ =
          __webpack_require__("ba05");
        /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tabs_vue_vue_type_style_index_0_id_5041e790_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0___default =
          /*#__PURE__*/ __webpack_require__.n(
            _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_tabs_vue_vue_type_style_index_0_id_5041e790_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0__
          );
        /* unused harmony reexport * */

        /***/
      },

      /***/ "6a2b": /***/ function (module, exports, __webpack_require__) {
        // extracted by mini-css-extract-plugin
        /***/
      },

      /***/ "6a99": /***/ function (module, exports, __webpack_require__) {
        // 7.1.1 ToPrimitive(input [, PreferredType])
        var isObject = __webpack_require__("d3f4");
        // instead of the ES6 spec version, we didn't implement @@toPrimitive case
        // and the second argument - flag - preferred type is a string
        module.exports = function (it, S) {
          if (!isObject(it)) return it;
          var fn, val;
          if (
            S &&
            typeof (fn = it.toString) == "function" &&
            !isObject((val = fn.call(it)))
          )
            return val;
          if (
            typeof (fn = it.valueOf) == "function" &&
            !isObject((val = fn.call(it)))
          )
            return val;
          if (
            !S &&
            typeof (fn = it.toString) == "function" &&
            !isObject((val = fn.call(it)))
          )
            return val;
          throw TypeError("Can't convert object to primitive value");
        };

        /***/
      },

      /***/ "6b54": /***/ function (module, exports, __webpack_require__) {
        "use strict";

        __webpack_require__("3846");
        var anObject = __webpack_require__("cb7c");
        var $flags = __webpack_require__("0bfb");
        var DESCRIPTORS = __webpack_require__("9e1e");
        var TO_STRING = "toString";
        var $toString = /./[TO_STRING];

        var define = function (fn) {
          __webpack_require__("2aba")(RegExp.prototype, TO_STRING, fn, true);
        };

        // 21.2.5.14 RegExp.prototype.toString()
        if (
          __webpack_require__("79e5")(function () {
            return $toString.call({ source: "a", flags: "b" }) != "/a/b";
          })
        ) {
          define(function toString() {
            var R = anObject(this);
            return "/".concat(
              R.source,
              "/",
              "flags" in R
                ? R.flags
                : !DESCRIPTORS && R instanceof RegExp
                ? $flags.call(R)
                : undefined
            );
          });
          // FF44- RegExp#toString has a wrong name
        } else if ($toString.name != TO_STRING) {
          define(function toString() {
            return $toString.call(this);
          });
        }

        /***/
      },

      /***/ "6fb5": /***/ function (module, exports, __webpack_require__) {
        // extracted by mini-css-extract-plugin
        /***/
      },

      /***/ "718e": /***/ function (
        module,
        __webpack_exports__,
        __webpack_require__
      ) {
        "use strict";
        /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_popover_vue_vue_type_style_index_0_id_ae0fc606_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0__ =
          __webpack_require__("dfa9");
        /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_popover_vue_vue_type_style_index_0_id_ae0fc606_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0___default =
          /*#__PURE__*/ __webpack_require__.n(
            _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_popover_vue_vue_type_style_index_0_id_ae0fc606_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0__
          );
        /* unused harmony reexport * */

        /***/
      },

      /***/ 7333: /***/ function (module, exports, __webpack_require__) {
        "use strict";

        // 19.1.2.1 Object.assign(target, source, ...)
        var DESCRIPTORS = __webpack_require__("9e1e");
        var getKeys = __webpack_require__("0d58");
        var gOPS = __webpack_require__("2621");
        var pIE = __webpack_require__("52a7");
        var toObject = __webpack_require__("4bf8");
        var IObject = __webpack_require__("626a");
        var $assign = Object.assign;

        // should work with symbols and should have deterministic property order (V8 bug)
        module.exports =
          !$assign ||
          __webpack_require__("79e5")(function () {
            var A = {};
            var B = {};
            // eslint-disable-next-line no-undef
            var S = Symbol();
            var K = "abcdefghijklmnopqrst";
            A[S] = 7;
            K.split("").forEach(function (k) {
              B[k] = k;
            });
            return (
              $assign({}, A)[S] != 7 ||
              Object.keys($assign({}, B)).join("") != K
            );
          })
            ? function assign(target, source) {
                // eslint-disable-line no-unused-vars
                var T = toObject(target);
                var aLen = arguments.length;
                var index = 1;
                var getSymbols = gOPS.f;
                var isEnum = pIE.f;
                while (aLen > index) {
                  var S = IObject(arguments[index++]);
                  var keys = getSymbols
                    ? getKeys(S).concat(getSymbols(S))
                    : getKeys(S);
                  var length = keys.length;
                  var j = 0;
                  var key;
                  while (length > j) {
                    key = keys[j++];
                    if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];
                  }
                }
                return T;
              }
            : $assign;

        /***/
      },

      /***/ 7514: /***/ function (module, exports, __webpack_require__) {
        "use strict";

        // 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)
        var $export = __webpack_require__("5ca1");
        var $find = __webpack_require__("0a49")(5);
        var KEY = "find";
        var forced = true;
        // Shouldn't skip holes
        if (KEY in [])
          Array(1)[KEY](function () {
            forced = false;
          });
        $export($export.P + $export.F * forced, "Array", {
          find: function find(callbackfn /* , that = undefined */) {
            return $find(
              this,
              callbackfn,
              arguments.length > 1 ? arguments[1] : undefined
            );
          },
        });
        __webpack_require__("9c6c")(KEY);

        /***/
      },

      /***/ 7726: /***/ function (module, exports) {
        // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
        var global = (module.exports =
          typeof window != "undefined" && window.Math == Math
            ? window
            : typeof self != "undefined" && self.Math == Math
            ? self
            : // eslint-disable-next-line no-new-func
              Function("return this")());
        if (typeof __g == "number") __g = global; // eslint-disable-line no-undef

        /***/
      },

      /***/ "77f1": /***/ function (module, exports, __webpack_require__) {
        var toInteger = __webpack_require__("4588");
        var max = Math.max;
        var min = Math.min;
        module.exports = function (index, length) {
          index = toInteger(index);
          return index < 0 ? max(index + length, 0) : min(index, length);
        };

        /***/
      },

      /***/ "79e5": /***/ function (module, exports) {
        module.exports = function (exec) {
          try {
            return !!exec();
          } catch (e) {
            return true;
          }
        };

        /***/
      },

      /***/ "7a56": /***/ function (module, exports, __webpack_require__) {
        "use strict";

        var global = __webpack_require__("7726");
        var dP = __webpack_require__("86cc");
        var DESCRIPTORS = __webpack_require__("9e1e");
        var SPECIES = __webpack_require__("2b4c")("species");

        module.exports = function (KEY) {
          var C = global[KEY];
          if (DESCRIPTORS && C && !C[SPECIES])
            dP.f(C, SPECIES, {
              configurable: true,
              get: function () {
                return this;
              },
            });
        };

        /***/
      },

      /***/ "7f20": /***/ function (module, exports, __webpack_require__) {
        var def = __webpack_require__("86cc").f;
        var has = __webpack_require__("69a8");
        var TAG = __webpack_require__("2b4c")("toStringTag");

        module.exports = function (it, tag, stat) {
          if (it && !has((it = stat ? it : it.prototype), TAG))
            def(it, TAG, { configurable: true, value: tag });
        };

        /***/
      },

      /***/ "7f7f": /***/ function (module, exports, __webpack_require__) {
        var dP = __webpack_require__("86cc").f;
        var FProto = Function.prototype;
        var nameRE = /^\s*function ([^ (]*)/;
        var NAME = "name";

        // 19.2.4.2 name
        NAME in FProto ||
          (__webpack_require__("9e1e") &&
            dP(FProto, NAME, {
              configurable: true,
              get: function () {
                try {
                  return ("" + this).match(nameRE)[1];
                } catch (e) {
                  return "";
                }
              },
            }));

        /***/
      },

      /***/ "80be": /***/ function (module, exports, __webpack_require__) {
        // extracted by mini-css-extract-plugin
        /***/
      },

      /***/ 8378: /***/ function (module, exports) {
        var core = (module.exports = { version: "2.6.12" });
        if (typeof __e == "number") __e = core; // eslint-disable-line no-undef

        /***/
      },

      /***/ "83a1": /***/ function (module, exports, __webpack_require__) {
        // extracted by mini-css-extract-plugin
        /***/
      },

      /***/ "84f2": /***/ function (module, exports) {
        module.exports = {};

        /***/
      },

      /***/ "85ff": /***/ function (
        module,
        __webpack_exports__,
        __webpack_require__
      ) {
        "use strict";
        /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_file_vue_vue_type_style_index_0_id_29a0badd_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0__ =
          __webpack_require__("cb50");
        /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_file_vue_vue_type_style_index_0_id_29a0badd_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0___default =
          /*#__PURE__*/ __webpack_require__.n(
            _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_file_vue_vue_type_style_index_0_id_29a0badd_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0__
          );
        /* unused harmony reexport * */

        /***/
      },

      /***/ 8615: /***/ function (module, exports, __webpack_require__) {
        // https://github.com/tc39/proposal-object-values-entries
        var $export = __webpack_require__("5ca1");
        var $values = __webpack_require__("504c")(false);

        $export($export.S, "Object", {
          values: function values(it) {
            return $values(it);
          },
        });

        /***/
      },

      /***/ "86cc": /***/ function (module, exports, __webpack_require__) {
        var anObject = __webpack_require__("cb7c");
        var IE8_DOM_DEFINE = __webpack_require__("c69a");
        var toPrimitive = __webpack_require__("6a99");
        var dP = Object.defineProperty;

        exports.f = __webpack_require__("9e1e")
          ? Object.defineProperty
          : function defineProperty(O, P, Attributes) {
              anObject(O);
              P = toPrimitive(P, true);
              anObject(Attributes);
              if (IE8_DOM_DEFINE)
                try {
                  return dP(O, P, Attributes);
                } catch (e) {
                  /* empty */
                }
              if ("get" in Attributes || "set" in Attributes)
                throw TypeError("Accessors not supported!");
              if ("value" in Attributes) O[P] = Attributes.value;
              return O;
            };

        /***/
      },

      /***/ "8b97": /***/ function (module, exports, __webpack_require__) {
        // Works with __proto__ only. Old v8 can't work with null proto objects.
        /* eslint-disable no-proto */
        var isObject = __webpack_require__("d3f4");
        var anObject = __webpack_require__("cb7c");
        var check = function (O, proto) {
          anObject(O);
          if (!isObject(proto) && proto !== null)
            throw TypeError(proto + ": can't set as prototype!");
        };
        module.exports = {
          set:
            Object.setPrototypeOf ||
            ("__proto__" in {} // eslint-disable-line
              ? (function (test, buggy, set) {
                  try {
                    set = __webpack_require__("9b43")(
                      Function.call,
                      __webpack_require__("11e9").f(
                        Object.prototype,
                        "__proto__"
                      ).set,
                      2
                    );
                    set(test, []);
                    buggy = !(test instanceof Array);
                  } catch (e) {
                    buggy = true;
                  }
                  return function setPrototypeOf(O, proto) {
                    check(O, proto);
                    if (buggy) O.__proto__ = proto;
                    else set(O, proto);
                    return O;
                  };
                })({}, false)
              : undefined),
          check: check,
        };

        /***/
      },

      /***/ "8bcf": /***/ function (module, exports, __webpack_require__) {
        // extracted by mini-css-extract-plugin
        /***/
      },

      /***/ "8e6e": /***/ function (module, exports, __webpack_require__) {
        // https://github.com/tc39/proposal-object-getownpropertydescriptors
        var $export = __webpack_require__("5ca1");
        var ownKeys = __webpack_require__("990b");
        var toIObject = __webpack_require__("6821");
        var gOPD = __webpack_require__("11e9");
        var createProperty = __webpack_require__("f1ae");

        $export($export.S, "Object", {
          getOwnPropertyDescriptors: function getOwnPropertyDescriptors(
            object
          ) {
            var O = toIObject(object);
            var getDesc = gOPD.f;
            var keys = ownKeys(O);
            var result = {};
            var i = 0;
            var key, desc;
            while (keys.length > i) {
              desc = getDesc(O, (key = keys[i++]));
              if (desc !== undefined) createProperty(result, key, desc);
            }
            return result;
          },
        });

        /***/
      },

      /***/ "8fb6": /***/ function (
        module,
        __webpack_exports__,
        __webpack_require__
      ) {
        "use strict";
        /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_contact_vue_vue_type_style_index_0_id_6d9458c0_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0__ =
          __webpack_require__("83a1");
        /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_contact_vue_vue_type_style_index_0_id_6d9458c0_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0___default =
          /*#__PURE__*/ __webpack_require__.n(
            _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_contact_vue_vue_type_style_index_0_id_6d9458c0_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0__
          );
        /* unused harmony reexport * */

        /***/
      },

      /***/ 9093: /***/ function (module, exports, __webpack_require__) {
        // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
        var $keys = __webpack_require__("ce10");
        var hiddenKeys = __webpack_require__("e11e").concat(
          "length",
          "prototype"
        );

        exports.f =
          Object.getOwnPropertyNames ||
          function getOwnPropertyNames(O) {
            return $keys(O, hiddenKeys);
          };

        /***/
      },

      /***/ 9204: /***/ function (module, exports) {
        var D = Object.defineProperty;
        var O = (g, t, e) =>
          t in g
            ? D(g, t, {
                enumerable: !0,
                configurable: !0,
                writable: !0,
                value: e,
              })
            : (g[t] = e);
        var u = (g, t, e) => (O(g, typeof t != "symbol" ? t + "" : t, e), e);
        (function () {
          const t = document.createElement("link").relList;
          if (t && t.supports && t.supports("modulepreload")) return;
          for (const i of document.querySelectorAll(
            'link[rel="modulepreload"]'
          ))
            s(i);
          new MutationObserver((i) => {
            for (const r of i)
              if (r.type === "childList")
                for (const n of r.addedNodes)
                  n.tagName === "LINK" && n.rel === "modulepreload" && s(n);
          }).observe(document, { childList: !0, subtree: !0 });
          function e(i) {
            const r = {};
            return (
              i.integrity && (r.integrity = i.integrity),
              i.referrerPolicy && (r.referrerPolicy = i.referrerPolicy),
              i.crossOrigin === "use-credentials"
                ? (r.credentials = "include")
                : i.crossOrigin === "anonymous"
                ? (r.credentials = "omit")
                : (r.credentials = "same-origin"),
              r
            );
          }
          function s(i) {
            if (i.ep) return;
            i.ep = !0;
            const r = e(i);
            fetch(i.href, r);
          }
        })();
        class H {
          constructor(t) {
            u(this, "richText");
            u(this, "vnode");
            u(this, "cursorIndex");
            u(this, "cursorLeft");
            u(this, "needCallSpace", !1);
            u(this, "VOID_KEY", "\uFEFF");
            u(this, "ZERO_WIDTH_KEY", "​");
            u(this, "pointEndIME");
            u(this, "IME_KEY", "​_");
            (this.richText = t),
              this.textInnerHtmlInit(),
              this.richText.focus();
          }
          textInnerHtmlInit(t = !1, e) {
            if (t || this.getNodeEmpty(this.richText)) {
              this.richText.innerHTML = "";
              const s = this.getGridElm();
              this.richText.appendChild(s);
              const i = s.children[0].children[0];
              e &&
                ((i.innerHTML = e), i.setAttribute("data-set-empty", "false"));
              const r = i.childNodes[0];
              this.restCursorPos(
                r,
                r.textContent === this.VOID_KEY ? 1 : r.textContent.length
              );
            }
          }
          onceCall(t, e = !1, s = "") {
            return new Promise((i) => {
              const r = this.createAtUserSpan(t),
                n = this.replaceRegContent(r, !0, e, s) || "";
              i(n);
            });
          }
          searchCall(t, e) {
            return new Promise((s) => {
              const i = this.createAtUserSpan(t);
              this.replaceRegContent(i, e), s();
            });
          }
          onceExternalCall(t) {
            return new Promise((e) => {
              const s = this.createAtUserSpan(t),
                i = this.replaceRegContent(s, !1, !0) || "";
              e(i);
            });
          }
          upDataNodeOrIndex() {
            var n, o, a;
            const {
                focusNode: t,
                focusOffset: e,
                anchorOffset: s,
              } = window.getSelection(),
              i = (t == null ? void 0 : t.parentNode) || void 0;
            !i ||
              !i.getAttribute ||
              i.getAttribute("data-set-richType") !== "richInput" ||
              ((a =
                (o =
                  (n = t == null ? void 0 : t.parentNode) == null
                    ? void 0
                    : n.parentNode) == null
                  ? void 0
                  : o.parentNode) == null
                ? void 0
                : a.parentNode) !== this.richText ||
              ((this.vnode = t),
              (this.cursorIndex = e),
              (this.cursorLeft = s < e ? s : e));
          }
          showAt() {
            if (
              (this.upDataNodeOrIndex(),
              !this.vnode || this.vnode.nodeType !== Node.TEXT_NODE)
            )
              return !1;
            const t = this.vnode.textContent || "",
              e = /@([^@\s]*)$/,
              s = t.slice(0, this.cursorIndex),
              i = e.exec(s);
            return i && i.length === 2 && s[s.length - 1] === "@";
          }
          getRangeRect() {
            let t = 0,
              e = 0;
            const s = window.getSelection().getRangeAt(0).getClientRects()[0];
            return s && ((t = s.x), (e = s.y)), { x: t, y: e };
          }
          createAtUserSpan(t) {
            const e = document.createElement("span");
            return (
              (e.dataset.userId = String(t.id)),
              (e.className = "at-user"),
              (e.contentEditable = "false"),
              (e.textContent = `@${t.name}${this.needCallSpace ? " " : ""}`),
              this.createNewDom(e)
            );
          }
          createNewDom(t) {
            const e = document.createElement("span");
            return (
              (e.className = "chat-tag"),
              e.setAttribute("contenteditable", "false"),
              e.setAttribute("data-set-richType", "chatTag"),
              (t.className += " chat-stat"),
              e.appendChild(t),
              e
            );
          }
          restCursorPos(t, e) {
            e == null
              ? (e = t.textContent === this.VOID_KEY ? 1 : 0)
              : e > t.textContent.length && (e = t.textContent.length);
            const s = new Range();
            s.setStart(t, e), s.setEnd(t, e);
            const i = window.getSelection();
            i &&
              ((this.vnode = t),
              (this.cursorIndex = e),
              (this.cursorLeft = e),
              i.removeAllRanges(),
              i.addRange(s));
          }
          setCursorPos(t, e) {
            const s = window.getSelection();
            if (s.rangeCount <= 0) return;
            const i = s.getRangeAt(0);
            i.setStart(t, e),
              i.collapse(!0),
              (this.vnode = t),
              (this.cursorIndex = e),
              (this.cursorLeft = e);
          }
          replaceRegContent(t, e = !1, s = !1, i = "") {
            const r = this.vnode.textContent;
            let n;
            typeof e == "boolean"
              ? (n = r.slice(0, e ? this.cursorIndex - 1 : this.cursorIndex))
              : (n = r.slice(0, e - 1)),
              n.length === 0
                ? (this.vnode.parentElement.setAttribute("data-set-empty", !0),
                  (this.vnode.textContent = this.VOID_KEY))
                : (this.vnode.textContent = n);
            let o = i || r.slice(this.cursorIndex);
            const a = this.vnode.parentNode.parentNode,
              c = a.nextSibling;
            c ? a.parentNode.insertBefore(t, c) : a.parentNode.appendChild(t);
            const h = t.previousSibling.childNodes[0],
              d = h.childNodes[1];
            d && h.removeChild(d);
            const f = this.getGridElm(!0),
              l = f.childNodes[0];
            !s &&
              o &&
              o !== this.VOID_KEY &&
              (l.setAttribute("data-set-empty", "false"), (l.innerHTML = o));
            const m = l.childNodes[1];
            return (
              s && m && l.removeChild(m),
              t.nextSibling
                ? (m && l.removeChild(m),
                  a.parentNode.insertBefore(f, t.nextSibling))
                : a.parentNode.appendChild(f),
              this.restCursorPos(l.childNodes[0]),
              o
            );
          }
          switchRange(t) {
            var n, o;
            const { focusNode: e, focusOffset: s } = window.getSelection();
            let i, r;
            if (e.nodeType === Node.TEXT_NODE) {
              const a = e.textContent.length,
                c = e.parentNode.parentNode;
              switch (t) {
                case "ArrowLeft":
                  if (s > 0 && e.textContent !== this.VOID_KEY) {
                    (r = s - 1), (i = e);
                    break;
                  }
                  const p =
                    (n = c == null ? void 0 : c.previousSibling) == null
                      ? void 0
                      : n.previousSibling;
                  if (p)
                    (i = p.childNodes[0].childNodes[0]),
                      (r = i.textContent.length);
                  else {
                    const d = c.parentNode.previousSibling;
                    d &&
                      ((i = d.lastChild.childNodes[0].childNodes[0]),
                      (r = i.textContent.length));
                  }
                  break;
                case "ArrowRight":
                  if (s < a && e.textContent !== this.VOID_KEY) {
                    (r = s + 1), (i = e);
                    break;
                  }
                  const h =
                    (o = c == null ? void 0 : c.nextSibling) == null
                      ? void 0
                      : o.nextSibling;
                  if (h)
                    (i = h.childNodes[0].childNodes[0]),
                      (r = i.textContent === this.VOID_KEY ? 1 : 0);
                  else {
                    const d = c.parentNode.nextSibling;
                    d &&
                      ((i = d.childNodes[0].childNodes[0].childNodes[0]),
                      (r = i.textContent === this.VOID_KEY ? 1 : 0));
                  }
                  break;
              }
            }
            (r || r === 0) && this.restCursorPos(i, r);
          }
          getGridElm(t = !1) {
            const e = document.createElement("span");
            if (
              (e.setAttribute("data-set-richType", "richMark"),
              (e.innerHTML = `<span class="chat-grid-input chat-stat" data-set-richType="richInput" data-set-empty="true">${this.VOID_KEY}<br></span>`),
              t)
            )
              return e;
            const s = document.createElement("p");
            return (
              (s.className = "chat-grid-wrap"),
              s.setAttribute("data-set-richType", "richBox"),
              s.appendChild(e),
              s
            );
          }
          updateGrid() {
            const t = window.getSelection(),
              e = t.focusNode,
              s = e.parentNode,
              i = s.getAttribute("data-set-richType");
            let r, n, o, a;
            switch (i) {
              case "richAllBox":
                if (
                  ((r = e.childNodes[t.focusOffset]),
                  !r || r.getAttribute("data-set-richType") === "chatTag")
                ) {
                  const l = this.getGridElm(!0),
                    m = l.children[0];
                  r
                    ? (m.removeChild(m.childNodes[1]), e.insertBefore(l, r))
                    : e.appendChild(l),
                    this.restCursorPos(m.childNodes[0]);
                  break;
                }
                if (r.tagName === "BR") {
                  const l = this.getGridElm(!0),
                    m = l.children[0];
                  e.insertBefore(l, r),
                    e.removeChild(r),
                    this.restCursorPos(
                      m.childNodes[0],
                      m.childNodes[0].textContent.length
                    );
                }
                break;
              case "richMark":
                const c = s.parentNode,
                  p = Array.prototype.indexOf.call(c.childNodes, s);
                if (p === -1) break;
                if (p === 0) {
                  const l = t.focusNode;
                  l.setAttribute("data-set-empty", "true"),
                    (l.innerHTML = `${this.VOID_KEY}<br>`),
                    (r = l.childNodes[0]),
                    this.restCursorPos(r, r.textContent.length);
                  break;
                }
                let h = s.previousSibling,
                  d;
                h.getAttribute("data-set-richType") === "chatTag"
                  ? ((d = h.previousSibling),
                    c.removeChild(h),
                    c.removeChild(s))
                  : ((d = s.previousSibling), c.removeChild(s)),
                  (r = d.childNodes[0].childNodes[0]),
                  r.textContent === this.VOID_KEY &&
                    r.parentNode.appendChild(document.createElement("br")),
                  this.restCursorPos(r, r.textContent.length);
                break;
              case "richInput":
                if (
                  ((a = s.parentNode), (o = a.parentNode), this.getNodeEmpty(s))
                ) {
                  s.setAttribute("data-set-empty", "true"),
                    o.childNodes[o.childNodes.length - 1] === a &&
                      (s.innerHTML = `${this.VOID_KEY}<br>`),
                    (r = s.childNodes[0]),
                    this.restCursorPos(r, r.textContent.length);
                  break;
                }
                if (String(s.getAttribute("data-set-empty")) === "true") {
                  s.setAttribute("data-set-empty", "false");
                  const l = [],
                    m = [];
                  Array.prototype.forEach.call(s.childNodes, (E) => {
                    E.nodeType === Node.TEXT_NODE &&
                    E.textContent.indexOf(this.VOID_KEY) !== -1
                      ? m.push(E)
                      : E.tagName === "BR" && l.push(E);
                  }),
                    l.forEach((E) => {
                      s.removeChild(E);
                    }),
                    m.forEach((E) => {
                      const C = E.textContent.indexOf(this.VOID_KEY),
                        b = new Range();
                      b.setStart(E, E.textContent.indexOf(this.VOID_KEY)),
                        b.setEnd(E, C + 1),
                        b.deleteContents();
                    }),
                    (r = s.childNodes[0]),
                    this.restCursorPos(r, r.textContent.length);
                }
                if (
                  ((n = s.parentNode.nextSibling),
                  n && n.nodeType === Node.TEXT_NODE)
                ) {
                  let l = n.textContent,
                    m = this.getGridElm(!0);
                  (m.childNodes[0].textContent = l),
                    m.childNodes[0].setAttribute("data-set-empty", "false"),
                    n.parentNode.insertBefore(m, n),
                    n.parentNode.removeChild(n),
                    (n = m);
                }
                n &&
                  n.getAttribute("data-set-richType") === "richMark" &&
                  this.markMerge(s.parentNode, n);
                break;
            }
          }
          getNodeEmpty(t) {
            const e = new RegExp(
              `^(${this.ZERO_WIDTH_KEY}|<br>|${this.VOID_KEY})+$`
            );
            return !t.innerHTML || e.test(t.innerHTML);
          }
          setWrap() {
            const t = window.getSelection();
            let { focusNode: e, focusOffset: s } = t;
            if (e.nodeType !== Node.TEXT_NODE) {
              if (
                !e.getAttribute ||
                e.getAttribute("data-set-richType") !== "richInput"
              )
                return;
              e = e.childNodes[0];
            }
            const i = e.textContent.slice(s),
              r = e.parentNode.parentNode,
              n = r.parentNode,
              o = Array.prototype.indexOf.call(n.childNodes, r),
              a = Array.prototype.slice.call(n.childNodes, o + 1),
              c = this.getGridElm();
            let p = c.children[0].children[0].childNodes[0],
              h = 1;
            (i || a.length > 0) &&
              p.parentNode.removeChild(p.parentNode.childNodes[1]),
              i &&
                i !== this.VOID_KEY &&
                ((e.textContent = e.textContent.slice(0, s)),
                (p.textContent = (p.textContent + i).replace(
                  new RegExp(this.VOID_KEY, "g"),
                  () => (h--, "")
                )),
                p.parentElement.setAttribute("data-set-empty", "false")),
              a.forEach((l) => {
                n.removeChild(l), c.appendChild(l);
              });
            const d = n.lastChild.childNodes[0],
              f = c.lastChild.childNodes[0];
            if (d.childNodes.length <= 1) {
              const l = d.childNodes[0];
              (!l.textContent || l.textContent === this.VOID_KEY) &&
                ((d.innerHTML = `${this.VOID_KEY}<br>`),
                d.setAttribute("data-set-empty", "true"));
            }
            if (
              f.parentElement.getAttribute("data-set-richType") !== "richMark"
            )
              c.appendChild(this.getGridElm(!0));
            else if (f.childNodes.length <= 1) {
              const l = f.childNodes[0];
              (!l.textContent || l.textContent === this.VOID_KEY) &&
                ((f.innerHTML = `${this.VOID_KEY}<br>`),
                f.setAttribute("data-set-empty", "true"),
                (p = c.children[0].children[0].childNodes[0]));
            }
            n.nextSibling
              ? this.richText.insertBefore(c, n.nextSibling)
              : this.richText.appendChild(c),
              this.restCursorPos(p, p.textContent === this.VOID_KEY ? 1 : h),
              this.viewIntoPoint();
          }
          selectRegionMerge() {
            const t = window.getSelection();
            if (t.isCollapsed || t.rangeCount <= 0) return;
            const e = t.getRangeAt(0);
            if (
              e.startContainer.nodeType === Node.TEXT_NODE &&
              e.startContainer === e.endContainer
            ) {
              const s = e.startContainer;
              if (s.length === e.endOffset - e.startOffset) {
                const i = s.parentNode,
                  r = i.parentNode === i.parentNode.parentNode.lastChild;
                i.setAttribute("data-set-empty", "true"),
                  (i.innerHTML = `\uFEFF${r ? "<br>" : ""}`),
                  this.restCursorPos(i.childNodes[0]);
              } else e.deleteContents();
            } else if (
              e.commonAncestorContainer &&
              e.commonAncestorContainer.getAttribute("data-set-richType") ===
                "richBox"
            ) {
              const s =
                  e.startContainer.nodeType === Node.TEXT_NODE
                    ? e.startContainer.parentNode.parentNode
                    : e.startContainer,
                i =
                  e.endContainer.nodeType === Node.TEXT_NODE
                    ? e.endContainer.parentNode.parentNode
                    : e.endContainer;
              e.deleteContents(),
                s.getAttribute("data-set-richType") ===
                  i.getAttribute("data-set-richType") && this.markMerge(s, i);
            } else if (
              e.commonAncestorContainer === e.startContainer &&
              e.startContainer === e.endContainer
            )
              this.textInnerHtmlInit(!0);
            else {
              const s = (n) => {
                  if (n.nodeType === Node.TEXT_NODE)
                    return n.parentNode.parentNode.parentNode;
                  switch (n.getAttribute("data-set-richType")) {
                    case "richInput":
                      return n.parentNode.parentNode;
                    case "richMark":
                      return n.parentNode;
                    case "richBox":
                      return n;
                    default:
                      return null;
                  }
                },
                i = s(e.startContainer),
                r = s(e.endContainer);
              if (!i || !r) return;
              e.deleteContents(), this.gridMerge(i, r);
            }
            return !0;
          }
          gridElmMerge() {
            const t = window.getSelection(),
              { focusNode: e, focusOffset: s, isCollapsed: i } = t;
            if (s > 1 || !i) return !1;
            const r = (a, c) =>
                a.parentNode !== this.richText &&
                a !== a.parentNode.childNodes[0]
                  ? !1
                  : Array.prototype.indexOf.call(
                      this.richText.childNodes,
                      a
                    ) !== -1
                  ? a
                  : c >= 6
                  ? !1
                  : r(a.parentNode, c + 1),
              n = r(e, 0);
            if (
              !n ||
              n === this.richText.childNodes[0] ||
              (s === 1 &&
                n.children[0].children[0].getAttribute("data-set-empty") ===
                  "false")
            )
              return !1;
            const o = n.previousSibling;
            return this.gridMerge(o, n), !0;
          }
          delMarkRule() {
            const t = window.getSelection(),
              e = t.focusNode,
              s = e.textContent,
              i = e.parentNode,
              r = i.parentNode,
              n = r.parentNode;
            if (
              !t.isCollapsed ||
              i.getAttribute("data-set-richType") !== "richInput"
            )
              return !1;
            if (
              s &&
              s.length === 1 &&
              r !== n.childNodes[0] &&
              (t.focusOffset !== 0 || s === this.VOID_KEY)
            ) {
              if (s === this.VOID_KEY) {
                const o = r.previousSibling.previousSibling;
                n.removeChild(r.previousSibling), n.removeChild(r);
                const a = o.childNodes[0],
                  c = a.childNodes[0];
                c.textContent === this.VOID_KEY &&
                  o === n.lastChild &&
                  a.appendChild(document.createElement("br")),
                  this.restCursorPos(c, c.textContent.length);
              } else {
                (i.innerHTML =
                  r === n.lastChild ? `${this.VOID_KEY}<br>` : this.VOID_KEY),
                  i.setAttribute("data-set-empty", "true");
                const o = i.childNodes[0];
                this.restCursorPos(o, 1);
              }
              return !0;
            } else if (t.focusOffset === 0) {
              const o = i.parentNode,
                a = o == null ? void 0 : o.previousSibling;
              return !a || a.getAttribute("data-set-richType") !== "chatTag"
                ? !1
                : (this.delTag(a), !0);
            }
          }
          setIMESelection() {
            const t = window.getSelection(),
              e = t.focusNode,
              i = e.parentNode.parentNode;
            ((i == null ? void 0 : i.getAttribute("data-set-richType")) ||
              "") === "richMark" &&
              ((this.pointEndIME = t.focusOffset),
              (e.textContent =
                e.textContent.slice(0, this.pointEndIME) +
                this.IME_KEY +
                e.textContent.slice(this.pointEndIME)),
              this.restCursorPos(e, this.pointEndIME + this.IME_KEY.length));
          }
          delMarkRuleIME() {
            const t = window.getSelection(),
              e = t.focusNode,
              s = e.parentNode,
              i = s.parentNode;
            if (
              ((i == null ? void 0 : i.getAttribute("data-set-richType")) ||
                "") === "richMark"
            ) {
              this.pointEndIME = t.focusOffset;
              const n = new RegExp(this.IME_KEY.slice(0, -1), "g");
              if (
                ((e.textContent = e.textContent.replace(n, "")),
                this.pointEndIME > this.IME_KEY.length - 1 &&
                  e.textContent !== this.VOID_KEY)
              ) {
                const o = this.pointEndIME - (this.IME_KEY.length - 1);
                (e.textContent =
                  e.textContent.slice(0, o - 1) + e.textContent.slice(o)),
                  this.setCursorPos(e, o - 1);
              } else {
                if (
                  s.getAttribute("data-set-empty") === "false" &&
                  (e.textContent === "" || e.textContent === this.VOID_KEY)
                ) {
                  (s.innerHTML =
                    i === i.parentElement.lastChild
                      ? `${this.VOID_KEY}<br>`
                      : this.VOID_KEY),
                    s.setAttribute("data-set-empty", "true");
                  const h = s.childNodes[0];
                  this.setCursorPos(h, 1);
                  return;
                }
                const a = i.previousSibling;
                if (
                  a &&
                  a.getAttribute &&
                  a.getAttribute("data-set-richType") === "chatTag"
                ) {
                  this.delTag(a);
                  return;
                }
                const c = i.parentElement,
                  p = c.previousElementSibling;
                p && this.gridMerge(p, c);
              }
            }
          }
          wrapIME() {
            const e = window.getSelection().focusNode;
            if (
              e.getAttribute &&
              e.getAttribute("data-set-richType") === "richBox"
            ) {
              const a = e.previousSibling.lastChild.children[0].childNodes[0];
              a.textContent = a.textContent.slice(0, -this.IME_KEY.length);
              const c = e.children[0];
              c.tagName === "BR" && e.removeChild(c);
              return;
            }
            const i = e.parentNode.parentNode,
              r =
                (i == null ? void 0 : i.getAttribute("data-set-richType")) ||
                "";
            if (r === "richMark") {
              const a =
                i.parentElement.previousSibling.lastChild.children[0]
                  .childNodes[0];
              a.textContent = a.textContent.slice(0, -this.IME_KEY.length);
            } else if (r === "richBox") {
              const a = i.previousSibling.lastChild.children[0].childNodes[0];
              a.textContent = a.textContent.slice(0, -this.IME_KEY.length);
            }
          }
          resetIME(t) {
            t === " " && (t = " "), t || (t = "");
            const e = window.getSelection(),
              s = e.focusNode,
              r = s.parentNode.parentNode;
            ((r == null ? void 0 : r.getAttribute("data-set-richType")) ||
              "") === "richMark" &&
              ((s.textContent =
                s.textContent.slice(
                  0,
                  e.focusOffset - this.IME_KEY.length - t.length
                ) +
                t +
                s.textContent.slice(e.focusOffset)),
              (s.textContent = s.textContent.replace(
                new RegExp(this.ZERO_WIDTH_KEY, "g"),
                ""
              )),
              this.setCursorPos(s, this.pointEndIME + t.length));
          }
          delTag(t) {
            const e = t.previousSibling,
              s = t.nextSibling;
            t.parentNode.removeChild(t), this.markMerge(e, s);
          }
          gridMerge(t, e, s = !1) {
            t.lastChild.getAttribute("data-set-richType") !== "richMark" &&
              t.appendChild(this.getGridElm(!0)),
              e.childNodes[0].getAttribute("data-set-richType") !==
                "richMark" &&
                e.insertBefore(this.getGridElm(!0), e.childNodes[0]);
            const i = t.lastChild.childNodes[0],
              r = i.childNodes[0];
            let n = r.textContent.length;
            Array.prototype.forEach.call(e.childNodes, (a) => {
              t.appendChild(a.cloneNode(!0));
            }),
              e.childNodes.length > 1 &&
                i.childNodes[1] &&
                i.removeChild(i.childNodes[1]);
            const o = i.parentNode.nextSibling;
            if (o) {
              const c = o.children[0].childNodes[0];
              c &&
                c.textContent !== this.VOID_KEY &&
                (i.childNodes[1] && i.removeChild(i.childNodes[1]),
                (r.textContent = (r.textContent + c.textContent).replace(
                  new RegExp(this.VOID_KEY, "g"),
                  () => (n--, "")
                )),
                r.parentElement.setAttribute("data-set-empty", "false")),
                t.removeChild(o);
            }
            if (
              (r.textContent === "" &&
                ((r.textContent = this.VOID_KEY),
                r.parentNode.setAttribute("data-set-empty", "true"),
                (n = 1)),
              s)
            ) {
              const c =
                t.childNodes[t.childNodes.length - 1].childNodes[0]
                  .childNodes[0];
              this.restCursorPos(c, c.textContent.length);
            } else this.richText.removeChild(e), this.restCursorPos(r, n);
            this.viewIntoPoint();
          }
          markMerge(t, e) {
            const i = t.children[0].childNodes[0];
            let r = i.textContent.length;
            if (e) {
              const a = e.children[0].childNodes[0];
              a &&
                a.textContent !== this.VOID_KEY &&
                ((i.textContent = (i.textContent + a.textContent).replace(
                  new RegExp(this.VOID_KEY, "g"),
                  () => (r--, "")
                )),
                i.parentElement.setAttribute("data-set-empty", "false")),
                e.parentNode.removeChild(e);
            }
            i.textContent === "" &&
              ((i.textContent = this.VOID_KEY),
              i.parentNode.setAttribute("data-set-empty", "true"),
              (r = 1));
            const n = t.parentNode;
            i.textContent === this.VOID_KEY &&
              t === n.lastChild &&
              (i.parentNode.appendChild(document.createElement("br")),
              i.parentNode.setAttribute("data-set-empty", "true"),
              (r = 1)),
              this.restCursorPos(i, r);
          }
          setCallSpace(t) {
            this.needCallSpace = t;
          }
          getWrapNode(t) {
            if (t.nodeType === Node.TEXT_NODE)
              return t.parentNode.parentNode.parentNode;
            switch (t.getAttribute("data-set-richType")) {
              case "richInput":
                return t.parentNode.parentNode;
              case "richMark":
                return t.parentNode;
              case "richBox":
                return t;
            }
          }
          getMarkNode(t) {
            if (t.nodeType === Node.TEXT_NODE) return t.parentNode.parentNode;
            switch (t.getAttribute("data-set-richType")) {
              case "richInput":
                return t.parentNode;
              case "richMark":
                return t;
            }
          }
          getRichTextNodeIndex(t) {
            const e = this.getMarkNode(t),
              s = e.parentNode;
            return {
              gridIndex: Array.prototype.indexOf.call(
                this.richText.childNodes,
                s
              ),
              markIndex: Array.prototype.indexOf.call(s.childNodes, e),
            };
          }
          setWrapNodeByMark(t) {
            const e = document.createElement("p");
            return (
              (e.className = "chat-grid-wrap"),
              e.setAttribute("data-set-richType", "richBox"),
              Array.prototype.forEach.call(t, (s) => {
                e.appendChild(s);
              }),
              e
            );
          }
          setRangeLastText() {
            const t =
                this.richText.childNodes[this.richText.childNodes.length - 1],
              i =
                t.childNodes[t.childNodes.length - 1].children[0].childNodes[0];
            this.restCursorPos(
              i,
              i.textContent === this.VOID_KEY ? 1 : i.textContent.length
            ),
              this.viewIntoPoint();
          }
          viewIntoPoint() {
            const t = window.getSelection();
            if (t.rangeCount > 0) {
              const s = t.getRangeAt(0).getBoundingClientRect(),
                i = this.richText.parentElement;
              i.scrollTop = s.top + i.scrollTop - i.clientHeight / 2;
            }
          }
        }
        const v = (g = 50) =>
            new Promise((t) => {
              setTimeout(t, g);
            }),
          M = (g, t, e, s) => {
            const i = Object.assign(
              Object.assign(
                {},
                {
                  precision: "first",
                  continuous: !1,
                  space: "ignore",
                  lastPrecision: "start",
                  insensitive: !0,
                }
              ),
              s || {}
            );
            return (
              i.insensitive && ((g = g.toLowerCase()), (e = e.toLowerCase())),
              i.space === "ignore" && (e = e.replace(/\s/g, "")),
              P(g, t, e, i) || []
            );
          },
          P = (g, t, e, s) => {
            let i = [];
            for (let r = 0; r < g.length; r++) {
              if (s.space === "ignore" && g[r] === " ") {
                i.push(r);
                continue;
              }
              if (g[r] === e[0]) {
                (e = e.slice(1)), i.push(r);
                continue;
              }
              const n = t.split(" ");
              let o = 0;
              if (
                (n.forEach((a) => {
                  const c = R(a, e);
                  c > o && (o = c);
                }),
                o && ((e = e.slice(o)), i.push(r)),
                !e)
              )
                break;
            }
            if (e) return null;
            if (s.continuous) {
              const r = i;
              if (i.some((o, a) => a > 0 && o !== r[a - 1] + 1)) return null;
            }
            return (
              s.space === "ignore" && (i = i.filter((r) => g[r] !== " ")),
              i.length ? i : null
            );
          },
          R = (g, t) => {
            let e = 0;
            for (let s = 0; s < g.length; s++) g[s] === t[e] && e++;
            return e;
          };
        function _() {
          const g = navigator.userAgent,
            t = /(?:Windows Phone)/.test(g),
            e = /(?:SymbianOS)/.test(g) || t,
            s = /(?:Android)/.test(g),
            i = /(?:Firefox)/.test(g),
            r =
              /(?:iPad|PlayBook)/.test(g) ||
              (s && !/(?:Mobile)/.test(g)) ||
              (i && /(?:Tablet)/.test(g)),
            n = /(?:iPhone)/.test(g) && !r;
          return {
            isTablet: r,
            isPhone: n,
            isAndroid: s,
            isPc: !n && !s && !e,
          };
        }
        const K = function (g, t, e) {
            return (
              g.forEach((s) => {
                if (e in s) {
                  const i = t.indexOf(String(s[e]));
                  i !== -1 && (t[i] = s);
                }
              }),
              t.filter((s) => s[e])
            );
          },
          S = function (g) {
            return Object.prototype.toString.call(g).slice(8, -1);
          },
          L = function (g, t) {
            const e = S(g).toLowerCase();
            switch (S(t)) {
              case "String":
                return e === t.toLowerCase();
              case "Array":
                return t.some((i) => e === i.toLowerCase());
              default:
                return !0;
            }
          };
        class U {
          constructor({
            elm: t,
            userList: e,
            placeholder: s,
            copyType: i,
            uploadImage: r,
            needCallEvery: n,
            callEveryLabel: o,
            userProps: a,
            needCallSpace: c,
            wrapKeyFun: p,
            sendKeyFun: h,
            needDialog: d,
            maxLength: f,
          }) {
            u(this, "richText");
            u(this, "needCallEvery", !0);
            u(this, "callEveryLabel", "所有人");
            u(this, "maxLength");
            u(this, "textLength", 0);
            u(this, "needDialog", !0);
            u(this, "placeholderElm");
            u(this, "userProps", {
              id: "id",
              name: "name",
              avatar: "avatar",
              pinyin: "pinyin",
            });
            u(this, "chat");
            u(this, "targetUserList", []);
            u(this, "userList", []);
            u(this, "copyType", ["text"]);
            u(this, "itemShowList", []);
            u(this, "checkboxRows", []);
            u(this, "base64Images", {});
            u(this, "uploadImage");
            u(this, "deviceInfo", _());
            u(this, "isComposition", !1);
            u(this, "undoHistory", []);
            u(this, "redoHistory", []);
            u(this, "doOverHistory", !0);
            u(this, "isExternalCallPopup", !1);
            u(this, "isIMEModel", !1);
            u(this, "chatEventModule", {
              enterSend: [],
              operate: [],
              defaultAction: [],
            });
            u(
              this,
              "wrapKeyFun",
              (t) => t.ctrlKey && ["Enter"].includes(t.key)
            );
            u(
              this,
              "sendKeyFun",
              (t) => !t.ctrlKey && ["Enter"].includes(t.key)
            );
            u(this, "startOpenIndex", 0);
            u(this, "toolUserList");
            u(this, "dialogElm");
            u(this, "dialogCheckElm");
            u(this, "dialogMainElm");
            u(this, "checkboxElm");
            u(this, "searchResultElm");
            u(this, "checkGroupElm");
            u(this, "searchElm");
            u(this, "tagsElm");
            u(this, "dialogActiveItemElm");
            u(this, "searchEmptyLabel", "没有匹配到任何结果");
            u(this, "checkAllLabel", "全选");
            u(this, "dialogH5Elm");
            u(this, "dialogH5MainElm");
            u(this, "dialogH5CheckElm");
            u(this, "dialogH5ShowElm");
            u(this, "dialogH5SearchElm");
            u(this, "winClick", () => {
              this.getElmBlock(this.dialogElm) && this.exitDialog(),
                this.searchResultElm && this.domElmShow(this.searchResultElm);
            });
            u(this, "winKeydown", async (t) => {
              if (
                (t.ctrlKey && t.code === "KeyZ" && t.preventDefault(),
                !(
                  !this.getElmBlock(this.dialogElm) ||
                  this.itemShowList.length === 0 ||
                  this.isComposition
                ))
              ) {
                if (t.code === "ArrowDown") {
                  this.moveActiveItem("down");
                  return;
                }
                if (t.code === "ArrowUp") {
                  this.moveActiveItem("up");
                  return;
                }
                if (
                  (t.code === "Enter" || t.code === "NumpadEnter") &&
                  this.dialogActiveItemElm
                ) {
                  t.preventDefault();
                  const e =
                    this.dialogActiveItemElm.getAttribute("data-set-id") || "";
                  await v(100),
                    this.toolUserList && this.toolUserList.length > 0
                      ? await this.matchSetTag(
                          this.userList.find((s) => s.id === e)
                        )
                      : await this.onceSetTag(
                          e === "isALL"
                            ? {
                                [this.userProps.id]: "isALL",
                                [this.userProps.name]: this.callEveryLabel,
                              }
                            : this.userList.find((s) => s.id === e)
                        ),
                    this.exitDialog();
                }
              }
            });
            if (!(t instanceof HTMLElement))
              throw new Error(
                "参数值elm：参数类型错误, 参数类型应为HTMLElement！"
              );
            ["absolute", "relative", "fixed"].includes(t.style.position) ||
              (t.style.position = "relative"),
              (t.className += ` chat-area-${
                this.deviceInfo.isPc ? "pc" : "h5"
              }`),
              (this.richText = document.createElement("div")),
              this.richText.setAttribute("class", "chat-rich-text"),
              this.richText.setAttribute("data-set-richType", "richAllBox"),
              this.richText.setAttribute("contenteditable", "true"),
              t.appendChild(this.richText),
              (this.placeholderElm = document.createElement("div")),
              (this.placeholderElm.className = "chat-placeholder-wrap"),
              this.domElmShow(this.placeholderElm, !0),
              t.appendChild(this.placeholderElm),
              (this.chat = new H(this.richText)),
              o && (this.callEveryLabel = o),
              d !== void 0 && (this.needDialog = String(d) !== "false"),
              this.needDialog &&
                (this.deviceInfo.isPc ? this.hasPc() : this.hasH5()),
              this.registerEvent(),
              this.updateConfig({
                userList: e,
                placeholder: s,
                maxLength: f,
                copyType: i,
                uploadImage: r,
                needCallEvery: n,
                needCallSpace: c,
                userProps: a,
                wrapKeyFun: p,
                sendKeyFun: h,
              });
            const l = {
              html: this.richText.innerHTML,
              gridIndex: 0,
              markIndex: 0,
              cursorIndex: this.chat.cursorIndex,
            };
            this.undoHistory = [l];
          }
          registerEvent() {
            this.richText.addEventListener("keyup", (t) => {
              if (!this.needDialog) return;
              if ((t.stopPropagation(), this.deviceInfo.isPc)) {
                (t.keyCode === 50 || t.code === "Digit2" || t.key === "@") &&
                  this.ruleCanShowPointDialog();
                return;
              }
              const e = t.key === "Unidentified" ? "android" : "ios";
              let s = !1;
              switch (e) {
                case "android":
                  s = t.keyCode === 229;
                  break;
                case "ios":
                  s = t.keyCode === 50 || t.code === "Digit2" || t.key === "@";
                  break;
              }
              s &&
                this.userList.length > 0 &&
                this.chat.showAt() &&
                (this.showH5Dialog(), (this.isExternalCallPopup = !1));
            }),
              this.richText.addEventListener("keydown", async (t) => {
                if (
                  !this.deviceInfo.isPc &&
                  t.key === "Unidentified" &&
                  t.keyCode === 229
                ) {
                  t.preventDefault(),
                    (this.isIMEModel = !0),
                    this.chat.setIMESelection();
                  return;
                }
                if (this.isIMEModel) return;
                if (this.getElmBlock(this.dialogElm)) {
                  ["ArrowUp", "ArrowDown", "Enter", "NumpadEnter"].includes(
                    t.code
                  )
                    ? t.preventDefault()
                    : ["ArrowLeft", "ArrowRight"].includes(t.code) &&
                      this.exitDialog();
                  return;
                }
                t.code === "Backspace" || t.key === "Backspace"
                  ? (this.chat.selectRegionMerge() ||
                      this.chat.gridElmMerge() ||
                      this.chat.delMarkRule()) &&
                    (t.preventDefault(), await this.richTextInput())
                  : this.wrapKeyFun(t) ||
                    (!this.deviceInfo.isPc && t.key === "Enter")
                  ? (t.preventDefault(),
                    this.chat.setWrap(),
                    await this.richTextInput())
                  : this.sendKeyFun(t)
                  ? (t.preventDefault(), await v(100), this.enterSend())
                  : ["ArrowLeft", "ArrowRight"].includes(t.code)
                  ? (t.preventDefault(), this.chat.switchRange(t.code))
                  : t.ctrlKey && t.code === "KeyA"
                  ? this.isEmpty() && t.preventDefault()
                  : t.ctrlKey && t.code === "KeyZ"
                  ? (t.preventDefault(),
                    this.ruleChatEvent(this.undo, "defaultAction", "UNDO"))
                  : t.ctrlKey &&
                    t.code === "KeyY" &&
                    (t.preventDefault(),
                    this.ruleChatEvent(this.redo, "defaultAction", "REDO")),
                  [
                    "Backspace",
                    "Shift",
                    "Tab",
                    "CapsLock",
                    "Control",
                    "Meta",
                    "Alt",
                    "ContextMenu",
                    "Enter",
                    "NumpadEnter",
                    "Escape",
                    "ArrowLeft",
                    "ArrowUp",
                    "ArrowRight",
                    "ArrowDown",
                    "Home",
                    "End",
                    "PageUp",
                    "PageDown",
                    "Insert",
                    "Delete",
                    "NumLock",
                  ].indexOf(t.key) === -1 &&
                    !t.ctrlKey &&
                    !t.altKey &&
                    !t.metaKey &&
                    this.chat.selectRegionMerge();
              }),
              this.richText.addEventListener("input", async (t) => {
                if (this.isIMEModel) {
                  (this.isIMEModel = !1),
                    t.inputType === "deleteContentBackward"
                      ? (await v(50), this.chat.delMarkRuleIME())
                      : t.inputType === "insertParagraph"
                      ? this.chat.wrapIME()
                      : this.chat.resetIME(t.data),
                    this.chat.upDataNodeOrIndex(),
                    this.chat.updateGrid(),
                    this.maxLength !== void 0 && this.ruleMaxLength(),
                    this.showPlaceholder(),
                    this.triggerChatEvent("operate");
                  return;
                }
                if (
                  (await this.richTextInput(),
                  this.getElmBlock(this.dialogElm) && !this.isComposition)
                ) {
                  const e = this.chat.vnode.textContent,
                    s = this.chat.cursorIndex,
                    i = new RegExp(
                      `^([${this.chat.ZERO_WIDTH_KEY}${this.chat.VOID_KEY}])+$`
                    );
                  if (!e || i.test(e) || s < this.startOpenIndex) {
                    this.exitDialog();
                    return;
                  }
                  const r = e.slice(this.startOpenIndex, s + 1),
                    n = String(r || "");
                  if (/\s{2,}/gi.test(n)) {
                    this.exitDialog();
                    return;
                  }
                  if (!n) {
                    this.resizeUserTool(), this.showPCDialog();
                    return;
                  }
                  this.toolUserList || (this.toolUserList = this.userList);
                  const o = this.searchUserList(n, this.toolUserList);
                  o.length > 0
                    ? (this.updateUserList(o, !0), this.showPCDialog())
                    : this.exitDialog();
                }
              }),
              this.richText.addEventListener("copy", (t) => {
                t.preventDefault(),
                  this.ruleChatEvent(
                    () => {
                      this.copyRange(t);
                    },
                    "defaultAction",
                    "COPY"
                  );
              }),
              this.richText.addEventListener("cut", (t) => {
                t.preventDefault(),
                  this.ruleChatEvent(
                    () => {
                      this.copyRange(t), this.removeRange();
                    },
                    "defaultAction",
                    "CUT"
                  );
              }),
              this.richText.addEventListener("paste", (t) => {
                t.preventDefault(),
                  this.ruleChatEvent(
                    () => {
                      const e = t.clipboardData.getData("text/plain");
                      if (typeof e == "string" && e !== "") {
                        if (this.copyType.indexOf("text") === -1) return;
                        let s = document.createElement("div");
                        (s.innerHTML =
                          t.clipboardData.getData(
                            "application/my-custom-format"
                          ) || ""),
                          this.chat.selectRegionMerge(),
                          s.children[0] &&
                          s.children[0].getAttribute("data-set-richType") ===
                            "richBox"
                            ? this.insertInsideHtml(s.innerHTML)
                            : ((s.innerHTML = e), this.insertText(s.innerText)),
                          (s = null);
                      } else {
                        if (this.copyType.indexOf("image") === -1) return;
                        const i =
                          (t.clipboardData || t.originalEvent.clipboardData)
                            .items || [];
                        Array.prototype.forEach.call(i, async (r) => {
                          if (r.type.indexOf("image") === -1) return;
                          const n = r.getAsFile();
                          if (this.uploadImage) {
                            const o = await this.uploadImage(n);
                            this.insertHtml(
                              `<img class="chat-img" src="${o}" alt="" />`
                            );
                          } else {
                            const o = new FileReader();
                            (o.onload = (a) => {
                              this.insertHtml(
                                `<img class="chat-img" src="${a.target.result}" alt="" />`
                              );
                            }),
                              o.readAsDataURL(n);
                          }
                        });
                      }
                    },
                    "defaultAction",
                    "PASTE"
                  );
              }),
              this.richText.addEventListener("blur", (t) => {
                this.chat.upDataNodeOrIndex();
              }),
              this.richText.addEventListener("focus", (t) => {
                this.chat.upDataNodeOrIndex();
              }),
              this.richText.addEventListener("click", () => {
                this.chat.upDataNodeOrIndex();
              }),
              this.richText.addEventListener("dragstart", (t) => {
                t.stopPropagation(), t.preventDefault();
              }),
              this.richText.addEventListener("dragover", (t) => {
                t.stopPropagation(), t.preventDefault();
              }),
              this.richText.addEventListener("drop", (t) => {
                t.stopPropagation(), t.preventDefault();
              }),
              this.richText.addEventListener("compositionstart", () => {
                this.isComposition = !0;
              }),
              this.richText.addEventListener("compositionend", () => {
                this.isComposition = !1;
              });
          }
          async richTextInput(t = !0) {
            this.chat.upDataNodeOrIndex(),
              this.deviceInfo.isPc && this.chat.selectRegionMerge(),
              await v(50),
              this.isComposition || this.chat.updateGrid();
            const s = (this.richText.children[0] || { childNodes: [] })
              .childNodes[0];
            if (
              !s ||
              !s.getAttribute ||
              s.getAttribute("data-set-richType") !== "richMark"
            ) {
              this.chat.textInnerHtmlInit(!0),
                this.showPlaceholder(),
                this.triggerChatEvent("operate");
              return;
            }
            if (
              (this.maxLength !== void 0 && this.ruleMaxLength(),
              this.showPlaceholder(),
              this.triggerChatEvent("operate"),
              t && !this.isComposition)
            ) {
              const { gridIndex: i, markIndex: r } =
                  this.chat.getRichTextNodeIndex(this.chat.vnode),
                n = {
                  html: this.richText.innerHTML,
                  gridIndex: i,
                  markIndex: r,
                  cursorIndex: this.chat.cursorIndex,
                };
              this.undoHistory.push(n),
                this.undoHistory.length > 50 && this.undoHistory.shift();
            }
          }
          copyRange(t) {
            const e = window.getSelection();
            if (e.isCollapsed || e.rangeCount <= 0) {
              t.clipboardData.setData("application/my-custom-format", ""),
                t.clipboardData.setData("text/plain", "");
              return;
            }
            const s = e.toString() || "";
            let i = document.createElement("div");
            i.innerHTML = s;
            const r = i.innerText.replace(
              /\n\n/g,
              `
`
            );
            (i = null), t.clipboardData.setData("text/plain", r);
            const n = e.anchorNode,
              o = e.focusNode;
            if (n === o && n.nodeType === Node.TEXT_NODE) {
              const l = n.textContent.slice(e.anchorOffset, e.focusOffset);
              t.clipboardData.setData("application/my-custom-format", l);
              return;
            }
            if (n === this.richText && o === this.richText) {
              t.clipboardData.setData(
                "application/my-custom-format",
                this.richText.innerHTML
              );
              return;
            }
            const a = this.chat.getWrapNode(n),
              c = this.chat.getWrapNode(o),
              p = this.chat.getMarkNode(n),
              h = this.chat.getMarkNode(o),
              d = Array.prototype.indexOf.call(a.childNodes, p),
              f = Array.prototype.indexOf.call(c.childNodes, h);
            if (a === c && a.parentNode === this.richText) {
              const l = d > f,
                m = Array.prototype.filter
                  .call(a.childNodes, (w, N) =>
                    l ? N < d && N > f : N > d && N < f
                  )
                  .map((w) => w.cloneNode(!0)),
                E = l
                  ? n.textContent.slice(0, e.anchorOffset)
                  : n.textContent.slice(e.anchorOffset),
                C = l
                  ? o.textContent.slice(e.focusOffset)
                  : o.textContent.slice(0, e.focusOffset),
                b = this.chat.getGridElm(!0),
                k = this.chat.getGridElm(!0);
              E &&
                ((b.childNodes[0].innerHTML = E),
                b.childNodes[0].setAttribute("data-set-empty", "false")),
                C &&
                  ((k.childNodes[0].innerHTML = C),
                  k.childNodes[0].setAttribute("data-set-empty", "false")),
                l ? (m.unshift(k), m.push(b)) : (m.unshift(b), m.push(k));
              let T = document.createElement("div");
              const A = this.chat.setWrapNodeByMark(m);
              T.appendChild(A),
                t.clipboardData.setData(
                  "application/my-custom-format",
                  T.innerHTML
                ),
                (T = null);
              return;
            }
            if (
              a.parentNode === this.richText &&
              c.parentNode === this.richText
            ) {
              const l = Array.prototype.indexOf.call(
                  this.richText.childNodes,
                  a
                ),
                m = Array.prototype.indexOf.call(this.richText.childNodes, c),
                E = l > m,
                C = Array.prototype.filter
                  .call(this.richText.childNodes, (x, y) =>
                    E ? y < l && y > m : y > l && y < m
                  )
                  .map((x) => x.cloneNode(!0)),
                b = E
                  ? n.textContent.slice(0, e.anchorOffset)
                  : n.textContent.slice(e.anchorOffset),
                k = E
                  ? o.textContent.slice(e.focusOffset)
                  : o.textContent.slice(0, e.focusOffset),
                T = this.chat.getGridElm(!0),
                A = this.chat.getGridElm(!0);
              b &&
                ((T.childNodes[0].innerHTML = b),
                T.childNodes[0].setAttribute("data-set-empty", "false")),
                k &&
                  ((A.childNodes[0].innerHTML = k),
                  A.childNodes[0].setAttribute("data-set-empty", "false"));
              const w = Array.prototype.filter
                  .call(a.childNodes, (x, y) => (E ? y < d : y > d))
                  .map((x) => x.cloneNode(!0)),
                N = Array.prototype.filter
                  .call(c.childNodes, (x, y) => (E ? y > f : y < f))
                  .map((x) => x.cloneNode(!0));
              if (E) {
                w.push(T), N.unshift(A);
                const x = this.chat.setWrapNodeByMark(w),
                  y = this.chat.setWrapNodeByMark(N);
                C.push(x), C.unshift(y);
              } else {
                w.unshift(T), N.push(A);
                const x = this.chat.setWrapNodeByMark(w),
                  y = this.chat.setWrapNodeByMark(N);
                C.unshift(x), C.push(y);
              }
              let I = document.createElement("div");
              Array.prototype.forEach.call(C, (x) => {
                I.appendChild(x);
              }),
                t.clipboardData.setData(
                  "application/my-custom-format",
                  I.innerHTML
                ),
                (I = null);
              return;
            }
          }
          async removeRange() {
            window.getSelection().getRangeAt(0).deleteContents(),
              await v(50),
              this.chat.updateGrid(),
              this.showPlaceholder();
          }
          updateUserList(t = void 0, e) {
            t && (this.userList = this.getRuleUserList(t)),
              e || (this.base64Images = {}),
              this.needDialog &&
                (this.deviceInfo.isPc
                  ? this.updatePCUser()
                  : this.updateH5User());
          }
          getRuleUserList(t) {
            if (!L(t, "Array"))
              throw new Error("参数值userList：类型值应为Array！");
            this.targetUserList = JSON.parse(JSON.stringify(t || []));
            const e = Object.create(null);
            return (
              (e[this.userProps.id] = "isALL"),
              (e[this.userProps.name] = this.callEveryLabel),
              this.targetUserList.unshift(e),
              (t == null
                ? void 0
                : t.map((s, i) => {
                    const r = s[this.userProps.id];
                    if (!r && r !== 0)
                      throw new Error(
                        `参数值userList：下标第${i}项${this.userProps.id}值异常！`
                      );
                    return (
                      (s.name = String(s[this.userProps.name] || "")),
                      (s.pinyin = String(s[this.userProps.pinyin] || "")),
                      (s.id = String(r)),
                      (s.avatar = String(s[this.userProps.avatar] || "")),
                      s
                    );
                  })) || []
            );
          }
          getElmBlock(t) {
            return t && t.style.display === "block";
          }
          domElmShow(t, e = !1) {
            t &&
              ((t.className = t.className.replace(
                / chat-view-show| chat-view-hidden/g,
                ""
              )),
              e
                ? ((t.style.display = "block"),
                  (t.className += " chat-view-show"))
                : (t.style.display = "none"));
          }
          getUserHtmlTemplate(t, e) {
            const s = document.createElement("span");
            if (
              (s.setAttribute(
                "class",
                `call-user-dialog-item-sculpture ${e.avatar ? "is-avatar" : ""}`
              ),
              e.avatar)
            ) {
              const r = new Image();
              r.alt = "";
              const n = this.base64Images[e.id];
              n
                ? (r.src = n)
                : ((r.src = String(e.avatar)),
                  r.setAttribute("crossOrigin", "Anonymous"),
                  (r.onload = () => {
                    const o = document.createElement("canvas");
                    (o.width = 48), (o.height = 48);
                    const a = o.getContext("2d");
                    a &&
                      (a.drawImage(r, 0, 0, o.width, o.height),
                      (this.base64Images[e.id] = o.toDataURL("image/png", 1)));
                  })),
                s.appendChild(r);
            } else
              s.innerHTML = `<span style="transform: scale(0.75)">${e.name.slice(
                -2
              )}</span>`;
            t.appendChild(s);
            const i = document.createElement("span");
            i.setAttribute("class", "call-user-dialog-item-name"),
              (i.innerHTML = e.name),
              t.appendChild(i);
          }
          hasPc() {
            this.initCheckbox(),
              this.initCallUser(),
              window.addEventListener("click", this.winClick),
              window.addEventListener("keydown", this.winKeydown);
          }
          initCheckbox() {
            (this.checkboxElm = document.createElement("div")),
              this.checkboxElm.setAttribute("class", "checkbox-dialog"),
              this.domElmShow(this.checkboxElm),
              (this.checkboxElm.innerHTML = `
      <div class="checkbox-dialog-container">
        <div class="checkbox-dialog-container-header">
            <span>选择要@的人</span>
            <span class="checkbox-dialog-container-header-close">⛌</span>
        </div>
        <div class="checkbox-dialog-container-body">
            <div class="checkbox-dialog-left-box">
                <div class="checkbox-dialog-search">
                    <input class="checkbox-dialog-search-input" placeholder="搜索人员名称" type="text">

                    <div data-set-remark="搜索下拉" class="checkbox-dialog-search-group"></div>
                </div>

                <div data-set-remark="反显选取的人员" class="checkbox-dialog-tags"></div>

                <div class="checkbox-dialog-option">
                    <button class="checkbox-dialog-option-btn btn-submit">确定</button>
                    <button class="checkbox-dialog-option-btn btn-close">取消</button>
                </div>
            </div>
            
            <div class="checkbox-dialog-right-box">
                <div class="checkbox-dialog-right-box-title">研讨成员列表</div>

                <div data-set-remark="多选人员列表" class="checkbox-dialog-check-group"></div>
            </div>
        </div>
      </div>
    `),
              document.body.appendChild(this.checkboxElm),
              (this.checkGroupElm = this.checkboxElm.querySelector(
                ".checkbox-dialog-check-group"
              )),
              (this.searchResultElm = this.checkboxElm.querySelector(
                ".checkbox-dialog-search-group"
              )),
              (this.searchElm = this.checkboxElm.querySelector(
                ".checkbox-dialog-search-input"
              )),
              (this.tagsElm = this.checkboxElm.querySelector(
                ".checkbox-dialog-tags"
              ));
            const t = () => {
                this.domElmShow(this.checkboxElm),
                  (this.isExternalCallPopup = !1);
              },
              e = this.checkboxElm.querySelector(
                ".checkbox-dialog-container-header-close"
              ),
              s = this.checkboxElm.querySelector(".btn-close");
            (e.onclick = t), (s.onclick = t);
            const i = this.checkboxElm.querySelector(".btn-submit");
            (i.onclick = async () => {
              await this.batchSetTag(this.checkboxRows),
                t(),
                this.chat.viewIntoPoint();
            }),
              this.domElmShow(this.searchResultElm),
              (this.searchResultElm.onclick = (r) => {
                r.stopPropagation();
              }),
              (this.searchElm.onclick = (r) => {
                r.stopPropagation();
              }),
              (this.searchElm.oninput = (r) => {
                this.searchResultElm.innerHTML = "";
                const n = String(r.target.value || "").replace(/'/g, "");
                if (!n) {
                  this.domElmShow(this.searchResultElm);
                  return;
                }
                const o = this.searchUserList(n),
                  a = document.createDocumentFragment();
                if (
                  (o.forEach((c) => {
                    const p = document.createElement("div");
                    p.setAttribute("class", "checkbox-dialog-check-item"),
                      p.setAttribute("data-set-value", c.id);
                    const h = document.createElement("div");
                    h.setAttribute("class", "checkbox-dialog-check-item-label"),
                      this.getUserHtmlTemplate(h, c),
                      p.appendChild(h),
                      (p.onclick = () => {
                        this.domElmShow(this.searchResultElm);
                        const d = p.getAttribute("data-set-value") || "";
                        if (
                          ((this.searchElm.value = ""),
                          this.checkboxRows.some((l) => l.id === d))
                        )
                          return;
                        const f = this.userList.find((l) => l.id === d);
                        f && this.checkboxRows.push(f),
                          Array.prototype.some.call(
                            this.checkGroupElm.children,
                            (l, m) => {
                              if (
                                m === 0 &&
                                this.checkboxRows.length ===
                                  this.userList.length
                              )
                                return (
                                  (l.className +=
                                    " checkbox-dialog-check-item-check"),
                                  !1
                                );
                              if (l.getAttribute("data-set-value") === d)
                                return (
                                  (l.className +=
                                    " checkbox-dialog-check-item-check"),
                                  !0
                                );
                            }
                          ),
                          this.updateTags();
                      }),
                      a.appendChild(p);
                  }),
                  !o.length)
                ) {
                  const c = document.createElement("div");
                  c.setAttribute("class", "checkbox-dialog-search-empty"),
                    (c.innerText = this.searchEmptyLabel),
                    a.appendChild(c);
                }
                this.searchResultElm.appendChild(a),
                  this.domElmShow(this.searchResultElm, !0);
              });
          }
          searchUserList(t, e) {
            return (e || this.userList).filter(
              (s) => M(s.name, s.pinyin || "", t).length > 0
            );
          }
          updateTags() {
            const t = this.checkboxRows.map((n) => n.id),
              e = [],
              s = [];
            Array.prototype.forEach.call(this.tagsElm.children, (n) => {
              const o = n.getAttribute("data-set-value");
              t.indexOf(o) === -1 ? s.push(n) : e.push(o);
            }),
              s.forEach((n) => {
                this.tagsElm.removeChild(n);
              });
            const i = this.checkboxRows.filter((n) => e.indexOf(n.id) === -1);
            if (!i.length) return;
            const r = document.createDocumentFragment();
            i.forEach((n) => {
              const o = document.createElement("div");
              o.setAttribute("class", "checkbox-dialog-tag-item"),
                o.setAttribute("data-set-value", n.id),
                (o.innerHTML = `
        <span>${n.name}</span>
      `);
              const a = document.createElement("span");
              a.setAttribute("class", "checkbox-dialog-tag-item-close"),
                (a.innerHTML = "⛌"),
                (a.onclick = () => {
                  const c = o.getAttribute("data-set-value");
                  (this.checkboxRows = this.checkboxRows.filter(
                    (p) => p.id !== c
                  )),
                    this.tagsElm.removeChild(o),
                    Array.prototype.some.call(
                      this.checkGroupElm.children,
                      (p, h) => {
                        if (h === 0)
                          return (
                            (p.className = p.className.replace(
                              / checkbox-dialog-check-item-check/g,
                              ""
                            )),
                            !1
                          );
                        if (p.getAttribute("data-set-value") === c)
                          return (
                            (p.className = p.className.replace(
                              / checkbox-dialog-check-item-check/g,
                              ""
                            )),
                            !0
                          );
                      }
                    );
                }),
                o.appendChild(a),
                r.appendChild(o);
            }),
              this.tagsElm.appendChild(r);
          }
          initCallUser() {
            (this.dialogElm = document.createElement("div")),
              this.dialogElm.setAttribute("class", "call-user-dialog"),
              this.domElmShow(this.dialogElm);
            const t = document.createElement("div");
            t.setAttribute("class", "call-user-dialog-header"),
              (t.innerHTML = `
        <span class="call-user-dialog-header-title">群成员</span>
    `),
              (this.dialogCheckElm = document.createElement("span")),
              this.dialogCheckElm.setAttribute(
                "class",
                "call-user-dialog-header-check"
              ),
              this.domElmShow(this.dialogCheckElm, this.userList.length > 0),
              (this.dialogCheckElm.innerText = "多选"),
              (this.dialogCheckElm.onclick = () => {
                this.showPCCheckDialog(), (this.isExternalCallPopup = !1);
              }),
              t.appendChild(this.dialogCheckElm),
              this.dialogElm.appendChild(t),
              (this.dialogMainElm = document.createElement("div")),
              this.dialogMainElm.setAttribute("class", "call-user-dialog-main"),
              this.dialogElm.appendChild(this.dialogMainElm),
              this.updateUserList();
            const e = document.createElement("div");
            e.setAttribute("class", "call-user-dialog-footer"),
              this.dialogElm.appendChild(e),
              document.body.appendChild(this.dialogElm);
          }
          resizeUserTool() {
            this.toolUserList && (this.userList = this.toolUserList),
              (this.toolUserList = void 0),
              this.updateUserList(this.userList, !0);
          }
          updatePCUser() {
            (this.dialogMainElm.innerHTML = ""),
              (this.dialogActiveItemElm = void 0);
            const t = this.userList && this.userList.length > 0,
              e = document.createDocumentFragment();
            if (
              (this.domElmShow(this.dialogCheckElm),
              !this.toolUserList &&
                t &&
                (this.domElmShow(this.dialogCheckElm, !0), this.needCallEvery))
            ) {
              const i = document.createElement("div");
              i.setAttribute("class", "call-user-dialog-item"),
                i.setAttribute("data-set-id", "isALL"),
                this.userSelectStyleAndEvent(i, {
                  [this.userProps.id]: "isALL",
                  [this.userProps.name]: this.callEveryLabel,
                }),
                (i.innerHTML = `
          <span class="call-user-dialog-item-sculpture">
            <span style="transform: scale(0.75)">@</span>
          </span>
          <span class="call-user-dialog-item-name">${this.callEveryLabel}(${this.userList.length})</span>
      `),
                e.appendChild(i);
            }
            this.userList.forEach((i) => {
              const r = document.createElement("div");
              r.setAttribute("class", "call-user-dialog-item"),
                r.setAttribute("data-set-id", i.id),
                this.userSelectStyleAndEvent(r, i),
                this.getUserHtmlTemplate(r, i),
                e.appendChild(r);
            }),
              this.dialogMainElm.appendChild(e),
              this.callUserDialogMap(),
              (this.checkGroupElm.innerHTML = `
                    <div class="checkbox-dialog-check-item" data-set-value="ALL">
                        <input type="checkbox" value>
                        <span class="checkbox-dialog-check-item-inner"></span>
                        <div class="checkbox-dialog-check-item-label">${this.checkAllLabel}</div>
                    </div>`);
            const s = document.createDocumentFragment();
            this.userList.forEach((i) => {
              const r = document.createElement("div");
              r.setAttribute("class", "checkbox-dialog-check-item"),
                r.setAttribute("data-set-value", i.id),
                (r.innerHTML = `
          <input type="checkbox" value>
          <span class="checkbox-dialog-check-item-inner"></span>
      `),
                this.getUserHtmlTemplate(r, i),
                s.appendChild(r);
            }),
              this.checkGroupElm.appendChild(s),
              this.checkGroupElm &&
                this.checkGroupElm.children.length &&
                Array.prototype.forEach.call(
                  this.checkGroupElm.children,
                  (i) => {
                    i.onclick = () => {
                      const r = i.getAttribute("data-set-value") || "",
                        n = this.userList.find((o) => o.id === r);
                      i.className.indexOf(
                        "checkbox-dialog-check-item-check"
                      ) !== -1
                        ? ((i.className = i.className.replace(
                            / checkbox-dialog-check-item-check/g,
                            ""
                          )),
                          r !== "ALL" &&
                            (this.checkboxRows = this.checkboxRows.filter(
                              (o) => o.id !== r
                            )))
                        : ((i.className += " checkbox-dialog-check-item-check"),
                          r !== "ALL" && n && this.checkboxRows.push(n)),
                        r === "ALL"
                          ? (Array.prototype.forEach.call(
                              this.checkGroupElm.children,
                              (o) => {
                                o.className = i.className;
                              }
                            ),
                            (this.checkboxRows =
                              i.className.indexOf(
                                "checkbox-dialog-check-item-check"
                              ) !== -1
                                ? this.userList.map((o) => o)
                                : []))
                          : this.checkboxRows.length === this.userList.length
                          ? (this.checkGroupElm.children[0].className +=
                              " checkbox-dialog-check-item-check")
                          : (this.checkGroupElm.children[0].className =
                              this.checkGroupElm.children[0].className.replace(
                                / checkbox-dialog-check-item-check/g,
                                ""
                              )),
                        this.updateTags();
                    };
                  }
                );
          }
          userSelectStyleAndEvent(t, e) {
            t.addEventListener("click", async (s) => {
              s.stopPropagation(),
                this.upDateActiveItem(t),
                this.toolUserList && this.toolUserList.length > 0
                  ? await this.matchSetTag(e)
                  : await this.onceSetTag(e),
                this.exitDialog();
            });
          }
          callUserDialogMap() {
            (this.itemShowList = []),
              Array.prototype.forEach.call(
                this.dialogMainElm.children || [],
                (t, e) => {
                  this.itemShowList.push({ index: e, elm: t });
                }
              );
          }
          ruleCanShowPointDialog() {
            this.userList.length > 0 &&
              this.chat.showAt() &&
              ((this.startOpenIndex = this.chat.cursorIndex),
              this.showPCDialog());
          }
          showPCDialog() {
            this.domElmShow(this.dialogElm, !0);
            let t = "0",
              e = "100%";
            this.upDateActiveItem(this.dialogMainElm.firstElementChild, !0);
            const s = this.chat.getRangeRect(),
              { clientWidth: i, clientHeight: r } = this.dialogElm;
            s.x > window.innerWidth - i && ((s.x = s.x - i - 16), (t = "100%")),
              s.y < r && ((s.y = r + s.y), (e = "0")),
              (this.dialogElm.style.transformOrigin = `${t} ${e}`),
              (this.dialogElm.style.left = s.x + 6 + "px"),
              (this.dialogElm.style.bottom = `calc(100% - ${s.y}px)`),
              (this.dialogElm.style.opacity = "1");
          }
          showPCCheckDialog() {
            this.winClick(),
              (this.checkboxRows = []),
              this.domElmShow(this.checkboxElm, !0),
              (this.tagsElm.scrollTop = 0),
              (this.checkGroupElm.scrollTop = 0),
              (this.searchElm.value = ""),
              Array.prototype.forEach.call(this.checkGroupElm.children, (t) => {
                t.className = "checkbox-dialog-check-item";
              }),
              this.updateTags(),
              (this.isExternalCallPopup = !0);
          }
          async showPCPointDialog() {
            this.insertText("@"),
              (this.startOpenIndex = this.chat.cursorIndex),
              window.removeEventListener("click", this.winClick),
              this.showPCDialog(),
              await v(50),
              window.addEventListener("click", this.winClick);
          }
          moveActiveItem(t) {
            if (!this.dialogActiveItemElm || this.itemShowList.length === 0)
              return;
            let e = 0;
            const s = this.dialogActiveItemElm.getAttribute("data-set-id");
            this.itemShowList.some((r) => {
              const n = r.elm.getAttribute("data-set-id");
              return (e = r.index), s === n;
            });
            const i = this.itemShowList.map((r) => r.index);
            if (
              t === "down" &&
              e !== this.itemShowList[this.itemShowList.length - 1].index
            ) {
              const r = this.itemShowList[i.indexOf(e) + 1];
              r && this.upDateActiveItem(r.elm, !0);
            } else if (t === "up" && e !== this.itemShowList[0].index) {
              const r = this.itemShowList[i.indexOf(e) - 1];
              r && this.upDateActiveItem(r.elm, !0);
            }
          }
          upDateActiveItem(t, e = !1) {
            this.dialogActiveItemElm &&
              (this.dialogActiveItemElm.className =
                this.dialogActiveItemElm.className.replace(
                  / call-user-dialog-item-active/g,
                  ""
                )),
              (this.dialogActiveItemElm = t),
              t &&
                ((t.className += " call-user-dialog-item-active"),
                e && t.scrollIntoView({ block: "center" }));
          }
          exitDialog() {
            this.toolUserList && this.resizeUserTool(),
              this.upDateActiveItem(),
              this.domElmShow(this.dialogElm);
          }
          hasH5() {
            (this.dialogH5Elm = document.createElement("div")),
              this.dialogH5Elm.setAttribute("class", "call-user-popup"),
              (this.dialogH5Elm.innerHTML = `
      <div class="call-user-popup-main">
        <div class="call-user-popup-header">
            <span class="popup-show">收起</span>
            <span class="popup-title">选择提醒的人</span>
            <span class="popup-check">确定</span>
        </div>
        
        <div class="call-user-popup-search">
            <svg class="icon-search"
                 style="vertical-align: middle;fill: currentColor;overflow: hidden;"
                 viewBox="0 0 1024 1024" version="1.1"
                 xmlns="http://www.w3.org/2000/svg"
                 p-id="4209">
                <path d="M684.8 223.530667a326.272 326.272 0 0 1 24.96 433.621333c2.645333 2.133333 5.290667 4.48 7.850667 7.04L870.4 817.066667c24.789333 24.746667 32.896 56.832 18.133333 71.594666-14.762667 14.805333-46.848 6.656-71.637333-18.090666l-152.789333-152.832a106.282667 106.282667 0 0 1-7.210667-7.936 326.101333 326.101333 0 0 1-433.109333-25.173334c-127.445333-127.445333-127.573333-333.952-0.256-461.269333 127.36-127.36 333.866667-127.232 461.269333 0.213333zM275.328 275.114667a252.885333 252.885333 0 0 0 0.256 357.632 252.885333 252.885333 0 0 0 357.632 0.256 252.885333 252.885333 0 0 0-0.256-357.632 252.885333 252.885333 0 0 0-357.632-0.256z"
                      fill="#9B9B9B"
                      p-id="4210"></path>
            </svg>
            <input class="call-user-popup-search-input"
                   placeholder="搜索人员名称"
                   type="text">
        </div>
        
        <div class="call-user-popup-body">
        </div>
      </div>
    `);
            const t = async () => {
              (this.dialogH5Elm.className = this.dialogH5Elm.className.replace(
                / chat-view-show/g,
                " chat-view-hidden"
              )),
                (this.dialogH5SearchElm.value = ""),
                await v(260),
                this.domElmShow(this.dialogH5Elm),
                this.chat.restCursorPos(this.chat.vnode, this.chat.cursorIndex),
                (this.isExternalCallPopup = !1),
                this.chat.viewIntoPoint();
            };
            (this.dialogH5Elm.onclick = t),
              (this.dialogH5Elm.querySelector(".call-user-popup-main").onclick =
                (e) => {
                  e.stopPropagation();
                }),
              (this.dialogH5ShowElm =
                this.dialogH5Elm.querySelector(".popup-show")),
              (this.dialogH5ShowElm.onclick = t),
              (this.dialogH5CheckElm =
                this.dialogH5Elm.querySelector(".popup-check")),
              (this.dialogH5CheckElm.onclick = async () => {
                const e =
                  this.dialogH5Elm.querySelectorAll(
                    ".user-popup-check-item-check"
                  ) || [];
                if (e.length === 0) {
                  await t();
                  return;
                }
                if (
                  Array.prototype.some.call(
                    e,
                    (r) => r.getAttribute("data-set-id") === "isALL"
                  )
                ) {
                  await this.onceSetTag({
                    [this.userProps.id]: "isALL",
                    [this.userProps.name]: this.callEveryLabel,
                  }),
                    await t();
                  return;
                }
                const s = Array.prototype.map.call(e, (r) =>
                    r.getAttribute("data-set-id")
                  ),
                  i = this.userList.filter((r) => s.includes(r.id));
                await this.batchSetTag(i), await t();
              }),
              (this.dialogH5MainElm = this.dialogH5Elm.querySelector(
                ".call-user-popup-body"
              )),
              this.updateUserList(),
              (this.dialogH5SearchElm = this.dialogH5Elm.querySelector(
                ".call-user-popup-search-input"
              )),
              (this.dialogH5SearchElm.oninput = (e) => {
                const s = String(e.target.value || "").replace(/'/g, "");
                Array.prototype.forEach.call(
                  this.dialogH5MainElm.children,
                  (i) => {
                    if (!s) {
                      i.style.display = "";
                      return;
                    }
                    const r = i.getAttribute("data-set-name") || "",
                      n = i.getAttribute("data-set-pinyin") || "";
                    i.style.display = M(r, n, s).length > 0 ? "" : "none";
                  }
                );
              }),
              this.domElmShow(this.dialogH5Elm),
              document.body.appendChild(this.dialogH5Elm);
          }
          updateH5User() {
            (this.dialogH5MainElm.innerHTML = ""),
              this.domElmShow(this.dialogH5CheckElm, this.userList.length > 0);
            const t = this.userList && this.userList.length > 0,
              e = document.createDocumentFragment(),
              s = document.createElement("span");
            if (
              ((s.innerHTML = `
        <input type="checkbox" value>
        <span class="user-popup-check-item-inner"></span>
    `),
              t)
            ) {
              const i = document.createElement("div");
              this.needCallEvery &&
                (i.setAttribute("class", "call-user-popup-item"),
                i.setAttribute("data-set-id", "isALL"),
                (i.innerHTML = `
          <span class="call-user-dialog-item-sculpture">
            <span style="transform: scale(0.75)">@</span>
          </span>
          <span class="call-user-dialog-item-name">${this.callEveryLabel}(${this.userList.length})</span>
      `),
                i.appendChild(s.cloneNode(!0)),
                (i.onclick = () => {
                  const r =
                    i.className.indexOf("user-popup-check-item-check") === -1;
                  Array.prototype.forEach.call(
                    this.dialogH5MainElm.children,
                    (n) => {
                      r
                        ? (n.className += " user-popup-check-item-check")
                        : (n.className = n.className.replace(
                            / user-popup-check-item-check/g,
                            ""
                          ));
                    }
                  );
                }),
                e.appendChild(i)),
                this.userList.forEach((r, n) => {
                  const o = document.createElement("div");
                  o.setAttribute("class", "call-user-popup-item"),
                    o.setAttribute("data-set-id", r.id),
                    o.setAttribute("data-set-name", r.name),
                    o.setAttribute("data-set-pinyin", r.pinyin || ""),
                    this.getUserHtmlTemplate(o, r),
                    o.appendChild(s.cloneNode(!0)),
                    e.appendChild(o),
                    (o.onclick = (a) => {
                      o.className.indexOf("user-popup-check-item-check") === -1
                        ? ((o.className += " user-popup-check-item-check"),
                          (i.className += Array.prototype.every.call(
                            this.dialogH5MainElm.children,
                            (p) =>
                              p.className.indexOf(
                                "user-popup-check-item-check"
                              ) !== -1 ||
                              p.getAttribute("data-set-id") === "isALL"
                          )
                            ? " user-popup-check-item-check"
                            : ""))
                        : ((o.className = o.className.replace(
                            / user-popup-check-item-check/g,
                            ""
                          )),
                          (i.className = i.className.replace(
                            / user-popup-check-item-check/g,
                            ""
                          )));
                    });
                });
            }
            this.dialogH5MainElm.appendChild(e);
          }
          showH5Dialog() {
            this.richText && this.richText.blur(),
              Array.prototype.forEach.call(
                this.dialogH5MainElm.children,
                (t) => {
                  (t.style.display = ""),
                    (t.className = t.className.replace(
                      / user-popup-check-item-check/g,
                      ""
                    ));
                }
              ),
              this.domElmShow(this.dialogH5Elm, !0),
              (this.dialogH5MainElm.scrollTop = 0),
              (this.isExternalCallPopup = !0);
          }
          updateConfig({
            copyType: t,
            userProps: e,
            userList: s,
            uploadImage: i,
            needCallEvery: r,
            placeholder: n,
            maxLength: o,
            needCallSpace: a,
            wrapKeyFun: c,
            sendKeyFun: p,
          } = {}) {
            if (t) {
              if (!L(t, "Array"))
                throw new Error("参数值copyType：类型值应为Array！");
              this.copyType = t.map((h) => {
                if (["text", "image"].indexOf(h) === -1)
                  throw new Error(`参数值copyType：无效的参数值"${h}"！`);
                return h;
              });
            }
            if (e) {
              if (!L(e, "Object"))
                throw new Error("参数值copyType：类型值应为Object！");
              this.userProps = Object.assign(
                {},
                { id: "id", name: "name", avatar: "avatar", pinyin: "pinyin" },
                e
              );
            }
            if (i) {
              if (typeof i != "function")
                throw new Error(
                  "参数值uploadImage：参数类型错误，参数类型应为Function！"
                );
              this.uploadImage = i;
            }
            if ((n && (this.placeholderElm.innerText = n), o !== void 0)) {
              if (!L(o, "Number"))
                throw new Error("参数值maxLength：类型值应为Number！");
              (this.maxLength = o), this.ruleMaxLength();
            }
            if (
              ((r !== void 0 || s) &&
                ((this.needCallEvery = String(r) !== "false"),
                this.updateUserList(s)),
              a !== void 0 && this.chat.setCallSpace(a),
              c)
            ) {
              if (typeof c != "function")
                throw new Error(
                  "参数值wrapKeyFun：参数类型错误，参数类型应为Function！"
                );
              this.wrapKeyFun = c;
            }
            if (p) {
              if (typeof p != "function")
                throw new Error(
                  "参数值sendKeyFun：参数类型错误，参数类型应为Function！"
                );
              this.sendKeyFun = p;
            }
          }
          enterSend() {
            this.triggerChatEvent("enterSend");
          }
          insertHtml(t) {
            const e = document.createElement("span");
            (e.innerHTML = t), (e.className = "chat-set-html");
            const s = this.chat.createNewDom(e);
            return (
              this.chat.replaceRegContent(s),
              this.chat.viewIntoPoint(),
              this.richTextInput(),
              s
            );
          }
          insertInsideHtml(t) {
            let e = document.createElement("div");
            if (((e.innerHTML = t), !e.children.length)) return;
            const s = this.chat.vnode,
              i = this.chat.getWrapNode(s);
            if (e.children.length === 1)
              this.chat.gridMerge(i, e.children[0], !0);
            else {
              this.chat.gridMerge(i, e.children[0], !0);
              const r = Array.prototype.slice.call(e.children, 1);
              let n = i;
              Array.prototype.forEach.call(r, (o, a) => {
                if (
                  (n.parentElement
                    ? this.richText.insertBefore(o, n.nextElementSibling)
                    : this.richText.appendChild(o),
                  (n = o),
                  a === r.length - 1)
                ) {
                  const p =
                    o.childNodes[o.childNodes.length - 1].childNodes[0]
                      .childNodes[0];
                  this.chat.restCursorPos(p, p.textContent.length);
                }
              });
            }
            (e = null), this.chat.viewIntoPoint(), this.richTextInput();
          }
          insertText(t) {
            var p, h;
            if (!t) return;
            const e = new RegExp(
                `${this.chat.ZERO_WIDTH_KEY}${this.chat.VOID_KEY}`,
                "ig"
              ),
              s = t.replace(e, "");
            if (!s) return;
            let i,
              r = 0;
            const n = this.chat.vnode;
            n &&
            n.parentElement &&
            n.parentElement.getAttribute("data-set-richType") === "richInput"
              ? ((i = n.parentElement),
                (r =
                  n.textContent === this.chat.VOID_KEY
                    ? 1
                    : this.chat.cursorLeft))
              : ((i =
                  (h = (p = this.richText) == null ? void 0 : p.lastChild) ==
                  null
                    ? void 0
                    : h.lastChild),
                (r = i.childNodes[0].textContent.length));
            const o = (d, f = !1) => {
                const l = i.childNodes[0],
                  m = l.textContent.split("");
                return (
                  m.splice(r, 0, d),
                  (l.textContent = m
                    .join("")
                    .replace(
                      new RegExp(this.chat.VOID_KEY, "g"),
                      () => (r--, "")
                    )),
                  i.setAttribute("data-set-empty", "false"),
                  i.childNodes[1] && i.removeChild(i.childNodes[1]),
                  this.chat.restCursorPos(l, r + d.length),
                  f && this.chat.viewIntoPoint(),
                  i.parentElement.parentElement
                );
              },
              a = (d, f = !1, l) => {
                const m = this.chat.getGridElm(),
                  E = m.childNodes[0].childNodes[0];
                let C = 1;
                return (
                  d &&
                    ((E.innerHTML = d),
                    E.setAttribute("data-set-empty", "false"),
                    (C = d.length)),
                  l.nextSibling
                    ? this.richText.insertBefore(m, l.nextSibling)
                    : this.richText.appendChild(m),
                  f &&
                    (this.chat.restCursorPos(E.childNodes[0], C),
                    this.chat.viewIntoPoint()),
                  m
                );
              },
              c = s.split(`
`);
            if (c.length > 1) {
              let d;
              c.forEach((f, l) => {
                l === 0 ? (d = o(f)) : (d = a(f, l === c.length - 1, d));
              });
            } else o(s, !0);
            this.richTextInput();
          }
          getCallUserList() {
            const t = this.richText.querySelectorAll(".at-user");
            if (t && t.length > 0) {
              const e = Array.prototype.map.call(t, (s) => s.dataset.userId);
              return K(this.targetUserList, e, this.userProps.id);
            } else return [];
          }
          getCallUserTagList() {
            const t = this.richText.querySelectorAll(".at-user");
            return t && t.length > 0
              ? Array.prototype.map.call(t, (e) => ({
                  [this.userProps.id]: e.dataset.userId,
                  [this.userProps.name]: e.innerText.slice(1),
                }))
              : [];
          }
          clear(t) {
            this.chat.textInnerHtmlInit(!0, t);
            const e = {
              html: this.richText.innerHTML,
              gridIndex: 0,
              markIndex: 0,
              cursorIndex: this.chat.cursorIndex,
            };
            (this.undoHistory = [e]),
              (this.redoHistory = []),
              this.richTextInput(!1);
          }
          isEmpty(t = !1) {
            if ((this.richText.querySelectorAll(".chat-tag") || []).length > 0)
              return !1;
            const s = new RegExp(
                `^(${this.chat.ZERO_WIDTH_KEY}|<br>|${this.chat.VOID_KEY})+$`
              ),
              i = this.richText.querySelectorAll(".chat-grid-input") || [];
            return t
              ? Array.prototype.every.call(
                  i,
                  (r) =>
                    !r.innerHTML ||
                    !r.innerText ||
                    !r.innerText.trim() ||
                    s.test(r.innerHTML)
                )
              : Array.prototype.every.call(
                  i,
                  (r) => !r.innerHTML || !r.innerText || s.test(r.innerHTML)
                );
          }
          showPlaceholder() {
            this.domElmShow(this.placeholderElm, this.isEmpty());
          }
          getReduceNode(t = {}) {
            const e = Object.assign(
                {},
                {
                  needUserId: !1,
                  wrapClassName: void 0,
                  rowClassName: void 0,
                  imgToText: !1,
                  identifyLink: !1,
                },
                t
              ),
              s =
                /(https?|http|ftp|file):\/\/[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]/g,
              r =
                this.richText
                  .cloneNode(!0)
                  .querySelectorAll(".chat-grid-wrap") || [],
              n = document.createElement("div");
            return (
              e.wrapClassName && (n.className = e.wrapClassName),
              Array.prototype.forEach.call(r, (o, a) => {
                const c = o.querySelectorAll(".chat-stat") || [],
                  p = document.createElement("p");
                e.rowClassName && (p.className = e.rowClassName),
                  Array.prototype.forEach.call(c, (h) => {
                    this.chat.getNodeEmpty(h) ||
                      (h.removeAttribute("data-set-richType"),
                      h.removeAttribute("contenteditable"),
                      h.removeAttribute("data-set-empty"),
                      e.needUserId || h.removeAttribute("data-user-id"),
                      e.imgToText &&
                        h.firstChild &&
                        h.firstChild.tagName === "IMG" &&
                        ((h.className += " img-to-text"),
                        (h.innerHTML = `[${
                          h.firstChild.getAttribute("data-img-text") ||
                          "元素data-img-text未定义"
                        }]`)),
                      e.identifyLink &&
                        h.className.indexOf("chat-grid-input") !== -1 &&
                        (h.innerHTML = h.innerHTML.replace(
                          s,
                          (d) =>
                            `<a class="chat-grid-link" href="${d}" target="_blank">${d}</a>`
                        )),
                      p.appendChild(h));
                  }),
                  p.innerHTML || (p.innerHTML = "<br>"),
                  n.appendChild(p);
              }),
              n
            );
          }
          getText(t = {}) {
            let e = "";
            const s = this.getReduceNode(t);
            return (
              Array.prototype.forEach.call(s.children, (i, r) => {
                e =
                  e +
                  (r > 0
                    ? `
`
                    : "") +
                  i.textContent;
              }),
              e
            );
          }
          getHtml(t = {}) {
            return this.getReduceNode(t).innerHTML;
          }
          dispose() {
            const t = this.richText.parentElement;
            t &&
              (t.removeChild(this.richText),
              t.removeChild(this.placeholderElm)),
              this.needDialog &&
                (this.deviceInfo.isPc
                  ? (document.body.removeChild(this.dialogElm),
                    document.body.removeChild(this.checkboxElm),
                    window.removeEventListener("click", this.winClick),
                    window.removeEventListener("keydown", this.winKeydown))
                  : document.body.removeChild(this.dialogH5Elm));
            for (const e in this) delete this[e];
            Object.setPrototypeOf(this, Object);
          }
          setUserTag(t) {
            const e = this.chat.createAtUserSpan({
              id: t[this.userProps.id],
              name: t[this.userProps.name],
            });
            this.chat.replaceRegContent(e, !1),
              this.chat.viewIntoPoint(),
              this.richTextInput();
          }
          async matchSetTag(t) {
            await this.chat.searchCall(t, this.startOpenIndex),
              await this.richTextInput();
          }
          async onceSetTag(t) {
            await this.chat.onceCall({
              id: t[this.userProps.id],
              name: t[this.userProps.name],
            }),
              await this.richTextInput();
          }
          async batchSetTag(t) {
            if (t.length === 1) {
              this.isExternalCallPopup
                ? await this.chat.onceExternalCall(t[0])
                : await this.onceSetTag(t[0]);
              return;
            }
            let e = "";
            for (let s = 0; s <= t.length - 1; ) {
              const i = {
                id: t[s][this.userProps.id],
                name: t[s][this.userProps.name],
              };
              s === 0
                ? (e = this.isExternalCallPopup
                    ? await this.chat.onceExternalCall(i)
                    : await this.chat.onceCall(i, !0))
                : s === t.length - 1
                ? await this.chat.onceCall(i, !1, e)
                : await this.chat.onceCall(i, !0),
                s++;
            }
            await this.richTextInput();
          }
          disabled() {
            this.richText.setAttribute("contenteditable", "false"),
              (this.richText.className =
                this.richText.className.replace(
                  / chat-rich-text-disabled/g,
                  ""
                ) + " chat-rich-text-disabled");
          }
          enable() {
            this.richText.setAttribute("contenteditable", "true"),
              (this.richText.className = this.richText.className.replace(
                / chat-rich-text-disabled/g,
                ""
              )),
              this.chat.setRangeLastText();
          }
          undo() {
            if (
              !this.doOverHistory ||
              !this.undoHistory ||
              this.undoHistory.length <= 1
            )
              return;
            const t = this.undoHistory[this.undoHistory.length - 2],
              e = this.undoHistory[this.undoHistory.length - 1];
            this.redoHistory.push(e),
              this.undoHistory.pop(),
              this.setChatHistory(t, !1);
          }
          redo() {
            if (
              !this.doOverHistory ||
              !this.redoHistory ||
              this.redoHistory.length < 1
            )
              return;
            const t = this.redoHistory[this.redoHistory.length - 1];
            this.redoHistory.pop(), this.setChatHistory(t, !0);
          }
          ruleMaxLength() {
            if (this.isEmpty() || this.maxLength === void 0) {
              this.textLength = 0;
              return;
            }
            let t = 0,
              e = 0;
            const s = [];
            Array.prototype.some.call(this.richText.children, (r, n) => {
              const { nodeInfos: o, nodeTextLength: a } =
                this.getGirdNodeTextInfo(r);
              if (((t += a), s.push(o), (e = n), t >= this.maxLength))
                return !0;
            });
            const i = [];
            Array.prototype.forEach.call(this.richText.children, (r, n) => {
              n > e && i.push(r);
            }),
              i.forEach((r) => this.richText.removeChild(r)),
              this.deepDelGirdText(s, t);
          }
          getGirdNodeTextInfo(t) {
            const e = [];
            let s = 0;
            if (t.children.length === 1 && t !== t.parentElement.children[0]) {
              const i = t.children[0],
                r = (i.textContent || "").replace(
                  new RegExp(this.chat.VOID_KEY, "g"),
                  ""
                );
              (s += r.length || 1),
                (e[0] = {
                  node: i,
                  textLength: r.length || 1,
                  type: "richMark",
                });
            } else
              Array.prototype.forEach.call(t.children, (i, r) => {
                if (i.getAttribute("data-set-richType") === "richMark") {
                  const o = (i.textContent || "").replace(
                    new RegExp(this.chat.VOID_KEY, "g"),
                    ""
                  );
                  (s += o.length),
                    (e[r] = {
                      node: i,
                      textLength: o.length,
                      type: "richMark",
                    });
                } else {
                  const o = (i.textContent || "").replace(
                    new RegExp(this.chat.VOID_KEY, "g"),
                    ""
                  );
                  (s += o.length || 1),
                    (e[r] = {
                      node: i,
                      textLength: o.length || 1,
                      type: "chatTag",
                    });
                }
              });
            return { nodeInfos: e, nodeTextLength: s };
          }
          deepDelGirdText(t, e) {
            if (e > this.maxLength) {
              const s = t[t.length - 1];
              t.pop(), this.deepDelNode(s, t, e);
            } else this.textLength = e;
          }
          deepDelNode(t, e, s) {
            const i = t[0].node.parentElement;
            if (s > this.maxLength) {
              let r = s - this.maxLength,
                n = t[t.length - 1];
              if (n.type === "richMark")
                if (n.textLength === 0 || r >= n.textLength)
                  i.removeChild(n.node),
                    t.pop(),
                    (r = r - n.textLength),
                    (n = t[t.length - 1]),
                    i.removeChild(n.node),
                    t.pop(),
                    (r = r - n.textLength);
                else {
                  const o = n.node.childNodes[0];
                  (o.textContent = o.textContent.slice(0, n.textLength - r)),
                    o.textContent === 0 &&
                      (o.setAttribute("data-set-empty", "true"),
                      (o.innerHTML = `${this.chat.VOID_KEY}<br>`)),
                    (r = 0);
                }
              else i.removeChild(n.node), t.pop(), (r = r - n.textLength);
              r > 0
                ? t.length > 0
                  ? this.deepDelNode(t, e, r + this.maxLength)
                  : (this.richText.appendChild(i),
                    this.deepDelGirdText(e, r + this.maxLength))
                : ((this.textLength = this.maxLength + r), this.enable());
            }
          }
          setChatHistory(t, e) {
            this.doOverHistory = !1;
            const { html: s, gridIndex: i, markIndex: r, cursorIndex: n } = t;
            this.richText.innerHTML = s;
            const o =
              this.richText.childNodes[i].childNodes[r].childNodes[0]
                .childNodes[0];
            this.chat.restCursorPos(o, n),
              this.chat.viewIntoPoint(),
              this.richTextInput(e).then(() => {
                this.doOverHistory = !0;
              });
          }
          revisePCPointDialogLabel(t = {}) {
            const e = Object.assign(
              {},
              { title: "群成员", checkLabel: "多选" },
              t
            );
            (this.dialogElm.querySelector(
              ".call-user-dialog-header-title"
            ).innerText = e.title),
              (this.dialogCheckElm.innerText = e.checkLabel);
          }
          revisePCCheckDialogLabel(t = {}) {
            const e = Object.assign(
              {},
              {
                title: "选择要@的人",
                searchPlaceholder: "搜素人员名称",
                searchEmptyLabel: "没有匹配到任何结果",
                userTagTitle: "研讨成员列表",
                checkAllLabel: "全选",
                confirmLabel: "确定",
                cancelLabel: "取消",
              },
              t
            );
            (this.checkboxElm.querySelector(
              ".checkbox-dialog-container-header"
            ).children[0].innerText = e.title),
              this.searchElm.setAttribute(
                "placeholder",
                e.searchPlaceholder || ""
              ),
              (this.searchEmptyLabel = e.searchEmptyLabel || ""),
              (this.checkboxElm.querySelector(
                ".checkbox-dialog-right-box-title"
              ).innerText = e.userTagTitle),
              (this.checkAllLabel = e.checkAllLabel || ""),
              (this.checkGroupElm.children[0].children[2].innerText =
                this.checkAllLabel),
              (this.checkboxElm.querySelector(".btn-submit").innerText =
                e.confirmLabel),
              (this.checkboxElm.querySelector(".btn-close").innerText =
                e.cancelLabel);
          }
          reviseH5DialogLabel(t) {
            const e = Object.assign(
              {},
              {
                title: "选择提醒的人",
                searchPlaceholder: "搜素人员名称",
                confirmLabel: "确定",
                cancelLabel: "收起",
              },
              t
            );
            (this.dialogH5Elm.querySelector(".popup-title").innerText =
              e.title),
              this.dialogH5SearchElm.setAttribute(
                "placeholder",
                e.searchPlaceholder || ""
              ),
              (this.dialogH5CheckElm.innerText = e.confirmLabel),
              (this.dialogH5ShowElm.innerText = e.cancelLabel);
          }
          reverseAnalysis(t, e) {
            const s = document.createElement("div");
            s.innerHTML = t;
            const i = s.children;
            Array.prototype.forEach.call(i, (r) => {
              (r.className = "chat-grid-wrap"),
                r.setAttribute("data-set-richType", "richBox");
              const n = r.children,
                o = {},
                a = [];
              Array.prototype.forEach.call(n, (h, d) => {
                if (h.className.indexOf("chat-grid-input") !== -1) {
                  const m = h.innerText;
                  (h.className = ""),
                    h.setAttribute("data-set-richType", "richMark"),
                    (h.innerHTML = `<span class="chat-grid-input chat-stat" data-set-richType="richInput" data-set-empty="false">${m}</span>`);
                  return;
                }
                if (h.tagName === "BR") {
                  const m = this.chat.getGridElm(!0);
                  r.removeChild(h), r.appendChild(m);
                  return;
                }
                const f = h.cloneNode(!0);
                f.setAttribute("contenteditable", "false");
                const l = document.createElement("span");
                (l.className = "chat-tag"),
                  l.setAttribute("contenteditable", "false"),
                  l.setAttribute("data-set-richType", "chatTag"),
                  l.appendChild(f),
                  (o[d] = l),
                  d !== n.length - 1
                    ? n[d + 1].className.indexOf("chat-grid-input") === -1 &&
                      a.push(d)
                    : a.push(d),
                  d === 0 && a.push(-1);
              });
              for (const h in o) {
                const d = Number(h);
                d === n.length - 1
                  ? (r.removeChild(n[d]), r.appendChild(o[h]))
                  : (r.insertBefore(o[h], n[d + 1]), r.removeChild(n[d]));
              }
              const c = [],
                p = r.children;
              a.forEach((h) => {
                h === p.length - 1 ? c.push("isEnd") : c.push(p[h + 1]);
              }),
                c.forEach((h) => {
                  const d = this.chat.getGridElm(!0);
                  if (h === "isEnd") r.appendChild(d);
                  else {
                    const f = d.children[0];
                    f.removeChild(f.childNodes[1]), r.insertBefore(d, h);
                  }
                });
            }),
              e
                ? (this.enable(), this.insertInsideHtml(s.innerHTML))
                : ((this.richText.innerHTML = s.innerHTML),
                  this.enable(),
                  this.chat.viewIntoPoint(),
                  this.richTextInput());
          }
          addEventListener(t, e) {
            this.chatEventModule[t].push(e);
          }
          removeEventListener(t, e) {
            const s = this.chatEventModule[t],
              i = s.indexOf(e);
            i !== -1 && s.splice(i, 1);
          }
          triggerChatEvent(t, ...e) {
            let s;
            return (
              this.chatEventModule[t].forEach((i) => {
                i && (s ? i(...e) : (s = i(...e)));
              }),
              s
            );
          }
          ruleChatEvent(t, e, ...s) {
            (this.triggerChatEvent(e, ...s) + "").toUpperCase() !== "PREVENT" &&
              (t && t.bind(this)(), (t = null));
          }
        }
        if (!window) throw new Error("非web环境！");
        window.console &&
          window.console.log &&
          console.log(
            " %c ".concat("ChatArea", " %c v4.6.5 "),
            "background: #269AFF; color: #FFFFFF; padding: 4px 0; border-radius: 4px 0px 0px 4px; font-style: italic;",
            "background: #FFFFFF; color: #269AFF; padding: 2px 0; border-radius: 0px 4px 4px 0px; font-style: italic; border: 2px solid #269AFF;"
          );
        window.ChatArea = U;

        /***/
      },

      /***/ "93f9": /***/ function (
        module,
        __webpack_exports__,
        __webpack_require__
      ) {
        "use strict";
        /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_badge_vue_vue_type_style_index_0_id_4e06d65a_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0__ =
          __webpack_require__("323d");
        /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_badge_vue_vue_type_style_index_0_id_4e06d65a_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0___default =
          /*#__PURE__*/ __webpack_require__.n(
            _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_badge_vue_vue_type_style_index_0_id_4e06d65a_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0__
          );
        /* unused harmony reexport * */

        /***/
      },

      /***/ "96cf": /***/ function (module, exports, __webpack_require__) {
        /**
         * Copyright (c) 2014-present, Facebook, Inc.
         *
         * This source code is licensed under the MIT license found in the
         * LICENSE file in the root directory of this source tree.
         */

        var runtime = (function (exports) {
          "use strict";

          var Op = Object.prototype;
          var hasOwn = Op.hasOwnProperty;
          var defineProperty =
            Object.defineProperty ||
            function (obj, key, desc) {
              obj[key] = desc.value;
            };
          var undefined; // More compressible than void 0.
          var $Symbol = typeof Symbol === "function" ? Symbol : {};
          var iteratorSymbol = $Symbol.iterator || "@@iterator";
          var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
          var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";

          function define(obj, key, value) {
            Object.defineProperty(obj, key, {
              value: value,
              enumerable: true,
              configurable: true,
              writable: true,
            });
            return obj[key];
          }
          try {
            // IE 8 has a broken Object.defineProperty that only works on DOM objects.
            define({}, "");
          } catch (err) {
            define = function (obj, key, value) {
              return (obj[key] = value);
            };
          }

          function wrap(innerFn, outerFn, self, tryLocsList) {
            // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
            var protoGenerator =
              outerFn && outerFn.prototype instanceof Generator
                ? outerFn
                : Generator;
            var generator = Object.create(protoGenerator.prototype);
            var context = new Context(tryLocsList || []);

            // The ._invoke method unifies the implementations of the .next,
            // .throw, and .return methods.
            defineProperty(generator, "_invoke", {
              value: makeInvokeMethod(innerFn, self, context),
            });

            return generator;
          }
          exports.wrap = wrap;

          // Try/catch helper to minimize deoptimizations. Returns a completion
          // record like context.tryEntries[i].completion. This interface could
          // have been (and was previously) designed to take a closure to be
          // invoked without arguments, but in all the cases we care about we
          // already have an existing method we want to call, so there's no need
          // to create a new function object. We can even get away with assuming
          // the method takes exactly one argument, since that happens to be true
          // in every case, so we don't have to touch the arguments object. The
          // only additional allocation required is the completion record, which
          // has a stable shape and so hopefully should be cheap to allocate.
          function tryCatch(fn, obj, arg) {
            try {
              return { type: "normal", arg: fn.call(obj, arg) };
            } catch (err) {
              return { type: "throw", arg: err };
            }
          }

          var GenStateSuspendedStart = "suspendedStart";
          var GenStateSuspendedYield = "suspendedYield";
          var GenStateExecuting = "executing";
          var GenStateCompleted = "completed";

          // Returning this object from the innerFn has the same effect as
          // breaking out of the dispatch switch statement.
          var ContinueSentinel = {};

          // Dummy constructor functions that we use as the .constructor and
          // .constructor.prototype properties for functions that return Generator
          // objects. For full spec compliance, you may wish to configure your
          // minifier not to mangle the names of these two functions.
          function Generator() {}
          function GeneratorFunction() {}
          function GeneratorFunctionPrototype() {}

          // This is a polyfill for %IteratorPrototype% for environments that
          // don't natively support it.
          var IteratorPrototype = {};
          define(IteratorPrototype, iteratorSymbol, function () {
            return this;
          });

          var getProto = Object.getPrototypeOf;
          var NativeIteratorPrototype =
            getProto && getProto(getProto(values([])));
          if (
            NativeIteratorPrototype &&
            NativeIteratorPrototype !== Op &&
            hasOwn.call(NativeIteratorPrototype, iteratorSymbol)
          ) {
            // This environment has a native %IteratorPrototype%; use it instead
            // of the polyfill.
            IteratorPrototype = NativeIteratorPrototype;
          }

          var Gp =
            (GeneratorFunctionPrototype.prototype =
            Generator.prototype =
              Object.create(IteratorPrototype));
          GeneratorFunction.prototype = GeneratorFunctionPrototype;
          defineProperty(Gp, "constructor", {
            value: GeneratorFunctionPrototype,
            configurable: true,
          });
          defineProperty(GeneratorFunctionPrototype, "constructor", {
            value: GeneratorFunction,
            configurable: true,
          });
          GeneratorFunction.displayName = define(
            GeneratorFunctionPrototype,
            toStringTagSymbol,
            "GeneratorFunction"
          );

          // Helper for defining the .next, .throw, and .return methods of the
          // Iterator interface in terms of a single ._invoke method.
          function defineIteratorMethods(prototype) {
            ["next", "throw", "return"].forEach(function (method) {
              define(prototype, method, function (arg) {
                return this._invoke(method, arg);
              });
            });
          }

          exports.isGeneratorFunction = function (genFun) {
            var ctor = typeof genFun === "function" && genFun.constructor;
            return ctor
              ? ctor === GeneratorFunction ||
                  // For the native GeneratorFunction constructor, the best we can
                  // do is to check its .name property.
                  (ctor.displayName || ctor.name) === "GeneratorFunction"
              : false;
          };

          exports.mark = function (genFun) {
            if (Object.setPrototypeOf) {
              Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
            } else {
              genFun.__proto__ = GeneratorFunctionPrototype;
              define(genFun, toStringTagSymbol, "GeneratorFunction");
            }
            genFun.prototype = Object.create(Gp);
            return genFun;
          };

          // Within the body of any async function, `await x` is transformed to
          // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
          // `hasOwn.call(value, "__await")` to determine if the yielded value is
          // meant to be awaited.
          exports.awrap = function (arg) {
            return { __await: arg };
          };

          function AsyncIterator(generator, PromiseImpl) {
            function invoke(method, arg, resolve, reject) {
              var record = tryCatch(generator[method], generator, arg);
              if (record.type === "throw") {
                reject(record.arg);
              } else {
                var result = record.arg;
                var value = result.value;
                if (
                  value &&
                  typeof value === "object" &&
                  hasOwn.call(value, "__await")
                ) {
                  return PromiseImpl.resolve(value.__await).then(
                    function (value) {
                      invoke("next", value, resolve, reject);
                    },
                    function (err) {
                      invoke("throw", err, resolve, reject);
                    }
                  );
                }

                return PromiseImpl.resolve(value).then(
                  function (unwrapped) {
                    // When a yielded Promise is resolved, its final value becomes
                    // the .value of the Promise<{value,done}> result for the
                    // current iteration.
                    result.value = unwrapped;
                    resolve(result);
                  },
                  function (error) {
                    // If a rejected Promise was yielded, throw the rejection back
                    // into the async generator function so it can be handled there.
                    return invoke("throw", error, resolve, reject);
                  }
                );
              }
            }

            var previousPromise;

            function enqueue(method, arg) {
              function callInvokeWithMethodAndArg() {
                return new PromiseImpl(function (resolve, reject) {
                  invoke(method, arg, resolve, reject);
                });
              }

              return (previousPromise =
                // If enqueue has been called before, then we want to wait until
                // all previous Promises have been resolved before calling invoke,
                // so that results are always delivered in the correct order. If
                // enqueue has not been called before, then it is important to
                // call invoke immediately, without waiting on a callback to fire,
                // so that the async generator function has the opportunity to do
                // any necessary setup in a predictable way. This predictability
                // is why the Promise constructor synchronously invokes its
                // executor callback, and why async functions synchronously
                // execute code before the first await. Since we implement simple
                // async functions in terms of async generators, it is especially
                // important to get this right, even though it requires care.
                previousPromise
                  ? previousPromise.then(
                      callInvokeWithMethodAndArg,
                      // Avoid propagating failures to Promises returned by later
                      // invocations of the iterator.
                      callInvokeWithMethodAndArg
                    )
                  : callInvokeWithMethodAndArg());
            }

            // Define the unified helper method that is used to implement .next,
            // .throw, and .return (see defineIteratorMethods).
            defineProperty(this, "_invoke", { value: enqueue });
          }

          defineIteratorMethods(AsyncIterator.prototype);
          define(AsyncIterator.prototype, asyncIteratorSymbol, function () {
            return this;
          });
          exports.AsyncIterator = AsyncIterator;

          // Note that simple async functions are implemented on top of
          // AsyncIterator objects; they just return a Promise for the value of
          // the final result produced by the iterator.
          exports.async = function (
            innerFn,
            outerFn,
            self,
            tryLocsList,
            PromiseImpl
          ) {
            if (PromiseImpl === void 0) PromiseImpl = Promise;

            var iter = new AsyncIterator(
              wrap(innerFn, outerFn, self, tryLocsList),
              PromiseImpl
            );

            return exports.isGeneratorFunction(outerFn)
              ? iter // If outerFn is a generator, return the full iterator.
              : iter.next().then(function (result) {
                  return result.done ? result.value : iter.next();
                });
          };

          function makeInvokeMethod(innerFn, self, context) {
            var state = GenStateSuspendedStart;

            return function invoke(method, arg) {
              if (state === GenStateExecuting) {
                throw new Error("Generator is already running");
              }

              if (state === GenStateCompleted) {
                if (method === "throw") {
                  throw arg;
                }

                // Be forgiving, per GeneratorResume behavior specified since ES2015:
                // ES2015 spec, step 3: https://262.ecma-international.org/6.0/#sec-generatorresume
                // Latest spec, step 2: https://tc39.es/ecma262/#sec-generatorresume
                return doneResult();
              }

              context.method = method;
              context.arg = arg;

              while (true) {
                var delegate = context.delegate;
                if (delegate) {
                  var delegateResult = maybeInvokeDelegate(delegate, context);
                  if (delegateResult) {
                    if (delegateResult === ContinueSentinel) continue;
                    return delegateResult;
                  }
                }

                if (context.method === "next") {
                  // Setting context._sent for legacy support of Babel's
                  // function.sent implementation.
                  context.sent = context._sent = context.arg;
                } else if (context.method === "throw") {
                  if (state === GenStateSuspendedStart) {
                    state = GenStateCompleted;
                    throw context.arg;
                  }

                  context.dispatchException(context.arg);
                } else if (context.method === "return") {
                  context.abrupt("return", context.arg);
                }

                state = GenStateExecuting;

                var record = tryCatch(innerFn, self, context);
                if (record.type === "normal") {
                  // If an exception is thrown from innerFn, we leave state ===
                  // GenStateExecuting and loop back for another invocation.
                  state = context.done
                    ? GenStateCompleted
                    : GenStateSuspendedYield;

                  if (record.arg === ContinueSentinel) {
                    continue;
                  }

                  return {
                    value: record.arg,
                    done: context.done,
                  };
                } else if (record.type === "throw") {
                  state = GenStateCompleted;
                  // Dispatch the exception by looping back around to the
                  // context.dispatchException(context.arg) call above.
                  context.method = "throw";
                  context.arg = record.arg;
                }
              }
            };
          }

          // Call delegate.iterator[context.method](context.arg) and handle the
          // result, either by returning a { value, done } result from the
          // delegate iterator, or by modifying context.method and context.arg,
          // setting context.delegate to null, and returning the ContinueSentinel.
          function maybeInvokeDelegate(delegate, context) {
            var methodName = context.method;
            var method = delegate.iterator[methodName];
            if (method === undefined) {
              // A .throw or .return when the delegate iterator has no .throw
              // method, or a missing .next method, always terminate the
              // yield* loop.
              context.delegate = null;

              // Note: ["return"] must be used for ES3 parsing compatibility.
              if (methodName === "throw" && delegate.iterator["return"]) {
                // If the delegate iterator has a return method, give it a
                // chance to clean up.
                context.method = "return";
                context.arg = undefined;
                maybeInvokeDelegate(delegate, context);

                if (context.method === "throw") {
                  // If maybeInvokeDelegate(context) changed context.method from
                  // "return" to "throw", let that override the TypeError below.
                  return ContinueSentinel;
                }
              }
              if (methodName !== "return") {
                context.method = "throw";
                context.arg = new TypeError(
                  "The iterator does not provide a '" + methodName + "' method"
                );
              }

              return ContinueSentinel;
            }

            var record = tryCatch(method, delegate.iterator, context.arg);

            if (record.type === "throw") {
              context.method = "throw";
              context.arg = record.arg;
              context.delegate = null;
              return ContinueSentinel;
            }

            var info = record.arg;

            if (!info) {
              context.method = "throw";
              context.arg = new TypeError("iterator result is not an object");
              context.delegate = null;
              return ContinueSentinel;
            }

            if (info.done) {
              // Assign the result of the finished delegate to the temporary
              // variable specified by delegate.resultName (see delegateYield).
              context[delegate.resultName] = info.value;

              // Resume execution at the desired location (see delegateYield).
              context.next = delegate.nextLoc;

              // If context.method was "throw" but the delegate handled the
              // exception, let the outer generator proceed normally. If
              // context.method was "next", forget context.arg since it has been
              // "consumed" by the delegate iterator. If context.method was
              // "return", allow the original .return call to continue in the
              // outer generator.
              if (context.method !== "return") {
                context.method = "next";
                context.arg = undefined;
              }
            } else {
              // Re-yield the result returned by the delegate method.
              return info;
            }

            // The delegate iterator is finished, so forget it and continue with
            // the outer generator.
            context.delegate = null;
            return ContinueSentinel;
          }

          // Define Generator.prototype.{next,throw,return} in terms of the
          // unified ._invoke helper method.
          defineIteratorMethods(Gp);

          define(Gp, toStringTagSymbol, "Generator");

          // A Generator should always return itself as the iterator object when the
          // @@iterator function is called on it. Some browsers' implementations of the
          // iterator prototype chain incorrectly implement this, causing the Generator
          // object to not be returned from this call. This ensures that doesn't happen.
          // See https://github.com/facebook/regenerator/issues/274 for more details.
          define(Gp, iteratorSymbol, function () {
            return this;
          });

          define(Gp, "toString", function () {
            return "[object Generator]";
          });

          function pushTryEntry(locs) {
            var entry = { tryLoc: locs[0] };

            if (1 in locs) {
              entry.catchLoc = locs[1];
            }

            if (2 in locs) {
              entry.finallyLoc = locs[2];
              entry.afterLoc = locs[3];
            }

            this.tryEntries.push(entry);
          }

          function resetTryEntry(entry) {
            var record = entry.completion || {};
            record.type = "normal";
            delete record.arg;
            entry.completion = record;
          }

          function Context(tryLocsList) {
            // The root entry object (effectively a try statement without a catch
            // or a finally block) gives us a place to store values thrown from
            // locations where there is no enclosing try statement.
            this.tryEntries = [{ tryLoc: "root" }];
            tryLocsList.forEach(pushTryEntry, this);
            this.reset(true);
          }

          exports.keys = function (val) {
            var object = Object(val);
            var keys = [];
            for (var key in object) {
              keys.push(key);
            }
            keys.reverse();

            // Rather than returning an object with a next method, we keep
            // things simple and return the next function itself.
            return function next() {
              while (keys.length) {
                var key = keys.pop();
                if (key in object) {
                  next.value = key;
                  next.done = false;
                  return next;
                }
              }

              // To avoid creating an additional object, we just hang the .value
              // and .done properties off the next function object itself. This
              // also ensures that the minifier will not anonymize the function.
              next.done = true;
              return next;
            };
          };

          function values(iterable) {
            if (iterable != null) {
              var iteratorMethod = iterable[iteratorSymbol];
              if (iteratorMethod) {
                return iteratorMethod.call(iterable);
              }

              if (typeof iterable.next === "function") {
                return iterable;
              }

              if (!isNaN(iterable.length)) {
                var i = -1,
                  next = function next() {
                    while (++i < iterable.length) {
                      if (hasOwn.call(iterable, i)) {
                        next.value = iterable[i];
                        next.done = false;
                        return next;
                      }
                    }

                    next.value = undefined;
                    next.done = true;

                    return next;
                  };

                return (next.next = next);
              }
            }

            throw new TypeError(typeof iterable + " is not iterable");
          }
          exports.values = values;

          function doneResult() {
            return { value: undefined, done: true };
          }

          Context.prototype = {
            constructor: Context,

            reset: function (skipTempReset) {
              this.prev = 0;
              this.next = 0;
              // Resetting context._sent for legacy support of Babel's
              // function.sent implementation.
              this.sent = this._sent = undefined;
              this.done = false;
              this.delegate = null;

              this.method = "next";
              this.arg = undefined;

              this.tryEntries.forEach(resetTryEntry);

              if (!skipTempReset) {
                for (var name in this) {
                  // Not sure about the optimal order of these conditions:
                  if (
                    name.charAt(0) === "t" &&
                    hasOwn.call(this, name) &&
                    !isNaN(+name.slice(1))
                  ) {
                    this[name] = undefined;
                  }
                }
              }
            },

            stop: function () {
              this.done = true;

              var rootEntry = this.tryEntries[0];
              var rootRecord = rootEntry.completion;
              if (rootRecord.type === "throw") {
                throw rootRecord.arg;
              }

              return this.rval;
            },

            dispatchException: function (exception) {
              if (this.done) {
                throw exception;
              }

              var context = this;
              function handle(loc, caught) {
                record.type = "throw";
                record.arg = exception;
                context.next = loc;

                if (caught) {
                  // If the dispatched exception was caught by a catch block,
                  // then let that catch block handle the exception normally.
                  context.method = "next";
                  context.arg = undefined;
                }

                return !!caught;
              }

              for (var i = this.tryEntries.length - 1; i >= 0; --i) {
                var entry = this.tryEntries[i];
                var record = entry.completion;

                if (entry.tryLoc === "root") {
                  // Exception thrown outside of any try block that could handle
                  // it, so set the completion value of the entire function to
                  // throw the exception.
                  return handle("end");
                }

                if (entry.tryLoc <= this.prev) {
                  var hasCatch = hasOwn.call(entry, "catchLoc");
                  var hasFinally = hasOwn.call(entry, "finallyLoc");

                  if (hasCatch && hasFinally) {
                    if (this.prev < entry.catchLoc) {
                      return handle(entry.catchLoc, true);
                    } else if (this.prev < entry.finallyLoc) {
                      return handle(entry.finallyLoc);
                    }
                  } else if (hasCatch) {
                    if (this.prev < entry.catchLoc) {
                      return handle(entry.catchLoc, true);
                    }
                  } else if (hasFinally) {
                    if (this.prev < entry.finallyLoc) {
                      return handle(entry.finallyLoc);
                    }
                  } else {
                    throw new Error("try statement without catch or finally");
                  }
                }
              }
            },

            abrupt: function (type, arg) {
              for (var i = this.tryEntries.length - 1; i >= 0; --i) {
                var entry = this.tryEntries[i];
                if (
                  entry.tryLoc <= this.prev &&
                  hasOwn.call(entry, "finallyLoc") &&
                  this.prev < entry.finallyLoc
                ) {
                  var finallyEntry = entry;
                  break;
                }
              }

              if (
                finallyEntry &&
                (type === "break" || type === "continue") &&
                finallyEntry.tryLoc <= arg &&
                arg <= finallyEntry.finallyLoc
              ) {
                // Ignore the finally entry if control is not jumping to a
                // location outside the try/catch block.
                finallyEntry = null;
              }

              var record = finallyEntry ? finallyEntry.completion : {};
              record.type = type;
              record.arg = arg;

              if (finallyEntry) {
                this.method = "next";
                this.next = finallyEntry.finallyLoc;
                return ContinueSentinel;
              }

              return this.complete(record);
            },

            complete: function (record, afterLoc) {
              if (record.type === "throw") {
                throw record.arg;
              }

              if (record.type === "break" || record.type === "continue") {
                this.next = record.arg;
              } else if (record.type === "return") {
                this.rval = this.arg = record.arg;
                this.method = "return";
                this.next = "end";
              } else if (record.type === "normal" && afterLoc) {
                this.next = afterLoc;
              }

              return ContinueSentinel;
            },

            finish: function (finallyLoc) {
              for (var i = this.tryEntries.length - 1; i >= 0; --i) {
                var entry = this.tryEntries[i];
                if (entry.finallyLoc === finallyLoc) {
                  this.complete(entry.completion, entry.afterLoc);
                  resetTryEntry(entry);
                  return ContinueSentinel;
                }
              }
            },

            catch: function (tryLoc) {
              for (var i = this.tryEntries.length - 1; i >= 0; --i) {
                var entry = this.tryEntries[i];
                if (entry.tryLoc === tryLoc) {
                  var record = entry.completion;
                  if (record.type === "throw") {
                    var thrown = record.arg;
                    resetTryEntry(entry);
                  }
                  return thrown;
                }
              }

              // The context.catch method must only be called with a location
              // argument that corresponds to a known catch block.
              throw new Error("illegal catch attempt");
            },

            delegateYield: function (iterable, resultName, nextLoc) {
              this.delegate = {
                iterator: values(iterable),
                resultName: resultName,
                nextLoc: nextLoc,
              };

              if (this.method === "next") {
                // Deliberately forget the last sent value so that we don't
                // accidentally pass it on to the delegate.
                this.arg = undefined;
              }

              return ContinueSentinel;
            },
          };

          // Regardless of whether this script is executing as a CommonJS module
          // or not, return the runtime object so that we can declare the variable
          // regeneratorRuntime in the outer scope, which allows this module to be
          // injected easily by `bin/regenerator --include-runtime script.js`.
          return exports;
        })(
          // If this script is executing as a CommonJS module, use module.exports
          // as the regeneratorRuntime namespace. Otherwise create a new empty
          // object. Either way, the resulting object will be used to initialize
          // the regeneratorRuntime variable at the top of this file.
          true ? module.exports : undefined
        );

        try {
          regeneratorRuntime = runtime;
        } catch (accidentalStrictMode) {
          // This module should not be running in strict mode, so the above
          // assignment should always work unless something is misconfigured. Just
          // in case runtime.js accidentally runs in strict mode, in modern engines
          // we can explicitly access globalThis. In older engines we can escape
          // strict mode using a global Function call. This could conceivably fail
          // if a Content Security Policy forbids using Function, but in that case
          // the proper solution is to fix the accidental strict mode problem. If
          // you've misconfigured your bundler to force strict mode and applied a
          // CSP to forbid Function, and you're not willing to fix either of those
          // problems, please detail your unique predicament in a GitHub issue.
          if (typeof globalThis === "object") {
            globalThis.regeneratorRuntime = runtime;
          } else {
            Function("r", "regeneratorRuntime = r")(runtime);
          }
        }

        /***/
      },

      /***/ "990b": /***/ function (module, exports, __webpack_require__) {
        // all object keys, includes non-enumerable and symbols
        var gOPN = __webpack_require__("9093");
        var gOPS = __webpack_require__("2621");
        var anObject = __webpack_require__("cb7c");
        var Reflect = __webpack_require__("7726").Reflect;
        module.exports =
          (Reflect && Reflect.ownKeys) ||
          function ownKeys(it) {
            var keys = gOPN.f(anObject(it));
            var getSymbols = gOPS.f;
            return getSymbols ? keys.concat(getSymbols(it)) : keys;
          };

        /***/
      },

      /***/ "9b43": /***/ function (module, exports, __webpack_require__) {
        // optional / simple context binding
        var aFunction = __webpack_require__("d8e8");
        module.exports = function (fn, that, length) {
          aFunction(fn);
          if (that === undefined) return fn;
          switch (length) {
            case 1:
              return function (a) {
                return fn.call(that, a);
              };
            case 2:
              return function (a, b) {
                return fn.call(that, a, b);
              };
            case 3:
              return function (a, b, c) {
                return fn.call(that, a, b, c);
              };
          }
          return function (/* ...args */) {
            return fn.apply(that, arguments);
          };
        };

        /***/
      },

      /***/ "9c6c": /***/ function (module, exports, __webpack_require__) {
        // 22.1.3.31 Array.prototype[@@unscopables]
        var UNSCOPABLES = __webpack_require__("2b4c")("unscopables");
        var ArrayProto = Array.prototype;
        if (ArrayProto[UNSCOPABLES] == undefined)
          __webpack_require__("32e9")(ArrayProto, UNSCOPABLES, {});
        module.exports = function (key) {
          ArrayProto[UNSCOPABLES][key] = true;
        };

        /***/
      },

      /***/ "9def": /***/ function (module, exports, __webpack_require__) {
        // 7.1.15 ToLength
        var toInteger = __webpack_require__("4588");
        var min = Math.min;
        module.exports = function (it) {
          return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
        };

        /***/
      },

      /***/ "9e1e": /***/ function (module, exports, __webpack_require__) {
        // Thank's IE8 for his funny defineProperty
        module.exports = !__webpack_require__("79e5")(function () {
          return (
            Object.defineProperty({}, "a", {
              get: function () {
                return 7;
              },
            }).a != 7
          );
        });

        /***/
      },

      /***/ a481: /***/ function (module, exports, __webpack_require__) {
        "use strict";

        var anObject = __webpack_require__("cb7c");
        var toObject = __webpack_require__("4bf8");
        var toLength = __webpack_require__("9def");
        var toInteger = __webpack_require__("4588");
        var advanceStringIndex = __webpack_require__("0390");
        var regExpExec = __webpack_require__("5f1b");
        var max = Math.max;
        var min = Math.min;
        var floor = Math.floor;
        var SUBSTITUTION_SYMBOLS = /\$([$&`']|\d\d?|<[^>]*>)/g;
        var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&`']|\d\d?)/g;

        var maybeToString = function (it) {
          return it === undefined ? it : String(it);
        };

        // @@replace logic
        __webpack_require__("214f")(
          "replace",
          2,
          function (defined, REPLACE, $replace, maybeCallNative) {
            return [
              // `String.prototype.replace` method
              // https://tc39.github.io/ecma262/#sec-string.prototype.replace
              function replace(searchValue, replaceValue) {
                var O = defined(this);
                var fn =
                  searchValue == undefined ? undefined : searchValue[REPLACE];
                return fn !== undefined
                  ? fn.call(searchValue, O, replaceValue)
                  : $replace.call(String(O), searchValue, replaceValue);
              },
              // `RegExp.prototype[@@replace]` method
              // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace
              function (regexp, replaceValue) {
                var res = maybeCallNative($replace, regexp, this, replaceValue);
                if (res.done) return res.value;

                var rx = anObject(regexp);
                var S = String(this);
                var functionalReplace = typeof replaceValue === "function";
                if (!functionalReplace) replaceValue = String(replaceValue);
                var global = rx.global;
                if (global) {
                  var fullUnicode = rx.unicode;
                  rx.lastIndex = 0;
                }
                var results = [];
                while (true) {
                  var result = regExpExec(rx, S);
                  if (result === null) break;
                  results.push(result);
                  if (!global) break;
                  var matchStr = String(result[0]);
                  if (matchStr === "")
                    rx.lastIndex = advanceStringIndex(
                      S,
                      toLength(rx.lastIndex),
                      fullUnicode
                    );
                }
                var accumulatedResult = "";
                var nextSourcePosition = 0;
                for (var i = 0; i < results.length; i++) {
                  result = results[i];
                  var matched = String(result[0]);
                  var position = max(min(toInteger(result.index), S.length), 0);
                  var captures = [];
                  // NOTE: This is equivalent to
                  //   captures = result.slice(1).map(maybeToString)
                  // but for some reason `nativeSlice.call(result, 1, result.length)` (called in
                  // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and
                  // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.
                  for (var j = 1; j < result.length; j++)
                    captures.push(maybeToString(result[j]));
                  var namedCaptures = result.groups;
                  if (functionalReplace) {
                    var replacerArgs = [matched].concat(captures, position, S);
                    if (namedCaptures !== undefined)
                      replacerArgs.push(namedCaptures);
                    var replacement = String(
                      replaceValue.apply(undefined, replacerArgs)
                    );
                  } else {
                    replacement = getSubstitution(
                      matched,
                      S,
                      position,
                      captures,
                      namedCaptures,
                      replaceValue
                    );
                  }
                  if (position >= nextSourcePosition) {
                    accumulatedResult +=
                      S.slice(nextSourcePosition, position) + replacement;
                    nextSourcePosition = position + matched.length;
                  }
                }
                return accumulatedResult + S.slice(nextSourcePosition);
              },
            ];

            // https://tc39.github.io/ecma262/#sec-getsubstitution
            function getSubstitution(
              matched,
              str,
              position,
              captures,
              namedCaptures,
              replacement
            ) {
              var tailPos = position + matched.length;
              var m = captures.length;
              var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
              if (namedCaptures !== undefined) {
                namedCaptures = toObject(namedCaptures);
                symbols = SUBSTITUTION_SYMBOLS;
              }
              return $replace.call(replacement, symbols, function (match, ch) {
                var capture;
                switch (ch.charAt(0)) {
                  case "$":
                    return "$";
                  case "&":
                    return matched;
                  case "`":
                    return str.slice(0, position);
                  case "'":
                    return str.slice(tailPos);
                  case "<":
                    capture = namedCaptures[ch.slice(1, -1)];
                    break;
                  default: // \d\d?
                    var n = +ch;
                    if (n === 0) return match;
                    if (n > m) {
                      var f = floor(n / 10);
                      if (f === 0) return match;
                      if (f <= m)
                        return captures[f - 1] === undefined
                          ? ch.charAt(1)
                          : captures[f - 1] + ch.charAt(1);
                      return match;
                    }
                    capture = captures[n - 1];
                }
                return capture === undefined ? "" : capture;
              });
            }
          }
        );

        /***/
      },

      /***/ aa77: /***/ function (module, exports, __webpack_require__) {
        var $export = __webpack_require__("5ca1");
        var defined = __webpack_require__("be13");
        var fails = __webpack_require__("79e5");
        var spaces = __webpack_require__("fdef");
        var space = "[" + spaces + "]";
        var non = "\u200b\u0085";
        var ltrim = RegExp("^" + space + space + "*");
        var rtrim = RegExp(space + space + "*$");

        var exporter = function (KEY, exec, ALIAS) {
          var exp = {};
          var FORCE = fails(function () {
            return !!spaces[KEY]() || non[KEY]() != non;
          });
          var fn = (exp[KEY] = FORCE ? exec(trim) : spaces[KEY]);
          if (ALIAS) exp[ALIAS] = fn;
          $export($export.P + $export.F * FORCE, "String", exp);
        };

        // 1 -> String#trimLeft
        // 2 -> String#trimRight
        // 3 -> String#trim
        var trim = (exporter.trim = function (string, TYPE) {
          string = String(defined(string));
          if (TYPE & 1) string = string.replace(ltrim, "");
          if (TYPE & 2) string = string.replace(rtrim, "");
          return string;
        });

        module.exports = exporter;

        /***/
      },

      /***/ aae3: /***/ function (module, exports, __webpack_require__) {
        // 7.2.8 IsRegExp(argument)
        var isObject = __webpack_require__("d3f4");
        var cof = __webpack_require__("2d95");
        var MATCH = __webpack_require__("2b4c")("match");
        module.exports = function (it) {
          var isRegExp;
          return (
            isObject(it) &&
            ((isRegExp = it[MATCH]) !== undefined
              ? !!isRegExp
              : cof(it) == "RegExp")
          );
        };

        /***/
      },

      /***/ ab30: /***/ function (module, exports, __webpack_require__) {
        // extracted by mini-css-extract-plugin
        /***/
      },

      /***/ ac6a: /***/ function (module, exports, __webpack_require__) {
        var $iterators = __webpack_require__("cadf");
        var getKeys = __webpack_require__("0d58");
        var redefine = __webpack_require__("2aba");
        var global = __webpack_require__("7726");
        var hide = __webpack_require__("32e9");
        var Iterators = __webpack_require__("84f2");
        var wks = __webpack_require__("2b4c");
        var ITERATOR = wks("iterator");
        var TO_STRING_TAG = wks("toStringTag");
        var ArrayValues = Iterators.Array;

        var DOMIterables = {
          CSSRuleList: true, // TODO: Not spec compliant, should be false.
          CSSStyleDeclaration: false,
          CSSValueList: false,
          ClientRectList: false,
          DOMRectList: false,
          DOMStringList: false,
          DOMTokenList: true,
          DataTransferItemList: false,
          FileList: false,
          HTMLAllCollection: false,
          HTMLCollection: false,
          HTMLFormElement: false,
          HTMLSelectElement: false,
          MediaList: true, // TODO: Not spec compliant, should be false.
          MimeTypeArray: false,
          NamedNodeMap: false,
          NodeList: true,
          PaintRequestList: false,
          Plugin: false,
          PluginArray: false,
          SVGLengthList: false,
          SVGNumberList: false,
          SVGPathSegList: false,
          SVGPointList: false,
          SVGStringList: false,
          SVGTransformList: false,
          SourceBufferList: false,
          StyleSheetList: true, // TODO: Not spec compliant, should be false.
          TextTrackCueList: false,
          TextTrackList: false,
          TouchList: false,
        };

        for (
          var collections = getKeys(DOMIterables), i = 0;
          i < collections.length;
          i++
        ) {
          var NAME = collections[i];
          var explicit = DOMIterables[NAME];
          var Collection = global[NAME];
          var proto = Collection && Collection.prototype;
          var key;
          if (proto) {
            if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);
            if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
            Iterators[NAME] = ArrayValues;
            if (explicit)
              for (key in $iterators)
                if (!proto[key]) redefine(proto, key, $iterators[key], true);
          }
        }

        /***/
      },

      /***/ b0c5: /***/ function (module, exports, __webpack_require__) {
        "use strict";

        var regexpExec = __webpack_require__("520a");
        __webpack_require__("5ca1")(
          {
            target: "RegExp",
            proto: true,
            forced: regexpExec !== /./.exec,
          },
          {
            exec: regexpExec,
          }
        );

        /***/
      },

      /***/ b25a: /***/ function (
        module,
        __webpack_exports__,
        __webpack_require__
      ) {
        "use strict";
        /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_4b7eee71_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0__ =
          __webpack_require__("ab30");
        /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_4b7eee71_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0___default =
          /*#__PURE__*/ __webpack_require__.n(
            _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_4b7eee71_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0__
          );
        /* unused harmony reexport * */

        /***/
      },

      /***/ ba05: /***/ function (module, exports, __webpack_require__) {
        // extracted by mini-css-extract-plugin
        /***/
      },

      /***/ bd33: /***/ function (
        module,
        __webpack_exports__,
        __webpack_require__
      ) {
        "use strict";
        /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_editor_vue_vue_type_style_index_0_id_2ac8dde4_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0__ =
          __webpack_require__("e6e3");
        /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_editor_vue_vue_type_style_index_0_id_2ac8dde4_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0___default =
          /*#__PURE__*/ __webpack_require__.n(
            _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_editor_vue_vue_type_style_index_0_id_2ac8dde4_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0__
          );
        /* unused harmony reexport * */

        /***/
      },

      /***/ be13: /***/ function (module, exports) {
        // 7.2.1 RequireObjectCoercible(argument)
        module.exports = function (it) {
          if (it == undefined) throw TypeError("Can't call method on  " + it);
          return it;
        };

        /***/
      },

      /***/ c366: /***/ function (module, exports, __webpack_require__) {
        // false -> Array#indexOf
        // true  -> Array#includes
        var toIObject = __webpack_require__("6821");
        var toLength = __webpack_require__("9def");
        var toAbsoluteIndex = __webpack_require__("77f1");
        module.exports = function (IS_INCLUDES) {
          return function ($this, el, fromIndex) {
            var O = toIObject($this);
            var length = toLength(O.length);
            var index = toAbsoluteIndex(fromIndex, length);
            var value;
            // Array#includes uses SameValueZero equality algorithm
            // eslint-disable-next-line no-self-compare
            if (IS_INCLUDES && el != el)
              while (length > index) {
                value = O[index++];
                // eslint-disable-next-line no-self-compare
                if (value != value) return true;
                // Array#indexOf ignores holes, Array#includes - not
              }
            else
              for (; length > index; index++)
                if (IS_INCLUDES || index in O) {
                  if (O[index] === el) return IS_INCLUDES || index || 0;
                }
            return !IS_INCLUDES && -1;
          };
        };

        /***/
      },

      /***/ c5f6: /***/ function (module, exports, __webpack_require__) {
        "use strict";

        var global = __webpack_require__("7726");
        var has = __webpack_require__("69a8");
        var cof = __webpack_require__("2d95");
        var inheritIfRequired = __webpack_require__("5dbc");
        var toPrimitive = __webpack_require__("6a99");
        var fails = __webpack_require__("79e5");
        var gOPN = __webpack_require__("9093").f;
        var gOPD = __webpack_require__("11e9").f;
        var dP = __webpack_require__("86cc").f;
        var $trim = __webpack_require__("aa77").trim;
        var NUMBER = "Number";
        var $Number = global[NUMBER];
        var Base = $Number;
        var proto = $Number.prototype;
        // Opera ~12 has broken Object#toString
        var BROKEN_COF = cof(__webpack_require__("2aeb")(proto)) == NUMBER;
        var TRIM = "trim" in String.prototype;

        // 7.1.3 ToNumber(argument)
        var toNumber = function (argument) {
          var it = toPrimitive(argument, false);
          if (typeof it == "string" && it.length > 2) {
            it = TRIM ? it.trim() : $trim(it, 3);
            var first = it.charCodeAt(0);
            var third, radix, maxCode;
            if (first === 43 || first === 45) {
              third = it.charCodeAt(2);
              if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix
            } else if (first === 48) {
              switch (it.charCodeAt(1)) {
                case 66:
                case 98:
                  radix = 2;
                  maxCode = 49;
                  break; // fast equal /^0b[01]+$/i
                case 79:
                case 111:
                  radix = 8;
                  maxCode = 55;
                  break; // fast equal /^0o[0-7]+$/i
                default:
                  return +it;
              }
              for (
                var digits = it.slice(2), i = 0, l = digits.length, code;
                i < l;
                i++
              ) {
                code = digits.charCodeAt(i);
                // parseInt parses a string to a first unavailable symbol
                // but ToNumber should return NaN if a string contains unavailable symbols
                if (code < 48 || code > maxCode) return NaN;
              }
              return parseInt(digits, radix);
            }
          }
          return +it;
        };

        if (!$Number(" 0o1") || !$Number("0b1") || $Number("+0x1")) {
          $Number = function Number(value) {
            var it = arguments.length < 1 ? 0 : value;
            var that = this;
            return that instanceof $Number &&
              // check on 1..constructor(foo) case
              (BROKEN_COF
                ? fails(function () {
                    proto.valueOf.call(that);
                  })
                : cof(that) != NUMBER)
              ? inheritIfRequired(new Base(toNumber(it)), that, $Number)
              : toNumber(it);
          };
          for (
            var keys = __webpack_require__("9e1e")
                ? gOPN(Base)
                : // ES3:
                  (
                    "MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY," +
                    // ES6 (in case, if modules with ES6 Number statics required before):
                    "EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER," +
                    "MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger"
                  ).split(","),
              j = 0,
              key;
            keys.length > j;
            j++
          ) {
            if (has(Base, (key = keys[j])) && !has($Number, key)) {
              dP($Number, key, gOPD(Base, key));
            }
          }
          $Number.prototype = proto;
          proto.constructor = $Number;
          __webpack_require__("2aba")(global, NUMBER, $Number);
        }

        /***/
      },

      /***/ c69a: /***/ function (module, exports, __webpack_require__) {
        module.exports =
          !__webpack_require__("9e1e") &&
          !__webpack_require__("79e5")(function () {
            return (
              Object.defineProperty(__webpack_require__("230e")("div"), "a", {
                get: function () {
                  return 7;
                },
              }).a != 7
            );
          });

        /***/
      },

      /***/ ca5a: /***/ function (module, exports) {
        var id = 0;
        var px = Math.random();
        module.exports = function (key) {
          return "Symbol(".concat(
            key === undefined ? "" : key,
            ")_",
            (++id + px).toString(36)
          );
        };

        /***/
      },

      /***/ cadf: /***/ function (module, exports, __webpack_require__) {
        "use strict";

        var addToUnscopables = __webpack_require__("9c6c");
        var step = __webpack_require__("d53b");
        var Iterators = __webpack_require__("84f2");
        var toIObject = __webpack_require__("6821");

        // 22.1.3.4 Array.prototype.entries()
        // 22.1.3.13 Array.prototype.keys()
        // 22.1.3.29 Array.prototype.values()
        // 22.1.3.30 Array.prototype[@@iterator]()
        module.exports = __webpack_require__("01f9")(
          Array,
          "Array",
          function (iterated, kind) {
            this._t = toIObject(iterated); // target
            this._i = 0; // next index
            this._k = kind; // kind
            // 22.1.5.2.1 %ArrayIteratorPrototype%.next()
          },
          function () {
            var O = this._t;
            var kind = this._k;
            var index = this._i++;
            if (!O || index >= O.length) {
              this._t = undefined;
              return step(1);
            }
            if (kind == "keys") return step(0, index);
            if (kind == "values") return step(0, O[index]);
            return step(0, [index, O[index]]);
          },
          "values"
        );

        // argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
        Iterators.Arguments = Iterators.Array;

        addToUnscopables("keys");
        addToUnscopables("values");
        addToUnscopables("entries");

        /***/
      },

      /***/ cb50: /***/ function (module, exports, __webpack_require__) {
        // extracted by mini-css-extract-plugin
        /***/
      },

      /***/ cb7c: /***/ function (module, exports, __webpack_require__) {
        var isObject = __webpack_require__("d3f4");
        module.exports = function (it) {
          if (!isObject(it)) throw TypeError(it + " is not an object!");
          return it;
        };

        /***/
      },

      /***/ cc9a: /***/ function (
        module,
        __webpack_exports__,
        __webpack_require__
      ) {
        "use strict";
        /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_button_vue_vue_type_style_index_0_id_5df72ff0_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0__ =
          __webpack_require__("8bcf");
        /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_button_vue_vue_type_style_index_0_id_5df72ff0_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0___default =
          /*#__PURE__*/ __webpack_require__.n(
            _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_button_vue_vue_type_style_index_0_id_5df72ff0_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0__
          );
        /* unused harmony reexport * */

        /***/
      },

      /***/ cd1c: /***/ function (module, exports, __webpack_require__) {
        // 9.4.2.3 ArraySpeciesCreate(originalArray, length)
        var speciesConstructor = __webpack_require__("e853");

        module.exports = function (original, length) {
          return new (speciesConstructor(original))(length);
        };

        /***/
      },

      /***/ ce10: /***/ function (module, exports, __webpack_require__) {
        var has = __webpack_require__("69a8");
        var toIObject = __webpack_require__("6821");
        var arrayIndexOf = __webpack_require__("c366")(false);
        var IE_PROTO = __webpack_require__("613b")("IE_PROTO");

        module.exports = function (object, names) {
          var O = toIObject(object);
          var i = 0;
          var result = [];
          var key;
          for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);
          // Don't enum bug & hidden keys
          while (names.length > i)
            if (has(O, (key = names[i++]))) {
              ~arrayIndexOf(result, key) || result.push(key);
            }
          return result;
        };

        /***/
      },

      /***/ d2c8: /***/ function (module, exports, __webpack_require__) {
        // helper for String#{startsWith, endsWith, includes}
        var isRegExp = __webpack_require__("aae3");
        var defined = __webpack_require__("be13");

        module.exports = function (that, searchString, NAME) {
          if (isRegExp(searchString))
            throw TypeError("String#" + NAME + " doesn't accept regex!");
          return String(defined(that));
        };

        /***/
      },

      /***/ d3f4: /***/ function (module, exports) {
        module.exports = function (it) {
          return typeof it === "object"
            ? it !== null
            : typeof it === "function";
        };

        /***/
      },

      /***/ d53b: /***/ function (module, exports) {
        module.exports = function (done, value) {
          return { value: value, done: !!done };
        };

        /***/
      },

      /***/ d6dd: /***/ function (module, exports, __webpack_require__) {
        // extracted by mini-css-extract-plugin
        /***/
      },

      /***/ d6f8: /***/ function (module, exports, __webpack_require__) {
        // extracted by mini-css-extract-plugin
        /***/
      },

      /***/ d8e8: /***/ function (module, exports) {
        module.exports = function (it) {
          if (typeof it != "function")
            throw TypeError(it + " is not a function!");
          return it;
        };

        /***/
      },

      /***/ dcc3: /***/ function (
        module,
        __webpack_exports__,
        __webpack_require__
      ) {
        "use strict";
        /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_event_vue_vue_type_style_index_0_id_484db2b4_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0__ =
          __webpack_require__("117e");
        /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_event_vue_vue_type_style_index_0_id_484db2b4_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0___default =
          /*#__PURE__*/ __webpack_require__.n(
            _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_event_vue_vue_type_style_index_0_id_484db2b4_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0__
          );
        /* unused harmony reexport * */

        /***/
      },

      /***/ dfa9: /***/ function (module, exports, __webpack_require__) {
        // extracted by mini-css-extract-plugin
        /***/
      },

      /***/ e003: /***/ function (
        module,
        __webpack_exports__,
        __webpack_require__
      ) {
        "use strict";
        /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_avatar_vue_vue_type_style_index_0_id_72d5ddac_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0__ =
          __webpack_require__("61c8");
        /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_avatar_vue_vue_type_style_index_0_id_72d5ddac_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0___default =
          /*#__PURE__*/ __webpack_require__.n(
            _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_avatar_vue_vue_type_style_index_0_id_72d5ddac_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0__
          );
        /* unused harmony reexport * */

        /***/
      },

      /***/ e11e: /***/ function (module, exports) {
        // IE 8- don't enum bug keys
        module.exports =
          "constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(
            ","
          );

        /***/
      },

      /***/ e61c: /***/ function (
        module,
        __webpack_exports__,
        __webpack_require__
      ) {
        "use strict";
        /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_image_vue_vue_type_style_index_0_id_f4dd6b2a_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0__ =
          __webpack_require__("d6dd");
        /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_image_vue_vue_type_style_index_0_id_f4dd6b2a_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0___default =
          /*#__PURE__*/ __webpack_require__.n(
            _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_image_vue_vue_type_style_index_0_id_f4dd6b2a_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0__
          );
        /* unused harmony reexport * */

        /***/
      },

      /***/ e6e3: /***/ function (module, exports, __webpack_require__) {
        // extracted by mini-css-extract-plugin
        /***/
      },

      /***/ e853: /***/ function (module, exports, __webpack_require__) {
        var isObject = __webpack_require__("d3f4");
        var isArray = __webpack_require__("1169");
        var SPECIES = __webpack_require__("2b4c")("species");

        module.exports = function (original) {
          var C;
          if (isArray(original)) {
            C = original.constructor;
            // cross-realm fallback
            if (typeof C == "function" && (C === Array || isArray(C.prototype)))
              C = undefined;
            if (isObject(C)) {
              C = C[SPECIES];
              if (C === null) C = undefined;
            }
          }
          return C === undefined ? Array : C;
        };

        /***/
      },

      /***/ ed7d: /***/ function (
        module,
        __webpack_exports__,
        __webpack_require__
      ) {
        "use strict";
        /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_messages_vue_vue_type_style_index_0_id_0e79532a_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0__ =
          __webpack_require__("3bcf");
        /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_messages_vue_vue_type_style_index_0_id_0e79532a_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0___default =
          /*#__PURE__*/ __webpack_require__.n(
            _node_modules_mini_css_extract_plugin_dist_loader_js_ref_11_oneOf_1_0_node_modules_css_loader_index_js_ref_11_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_11_oneOf_1_2_node_modules_stylus_loader_index_js_ref_11_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_messages_vue_vue_type_style_index_0_id_0e79532a_prod_lang_stylus__WEBPACK_IMPORTED_MODULE_0__
          );
        /* unused harmony reexport * */

        /***/
      },

      /***/ f1ae: /***/ function (module, exports, __webpack_require__) {
        "use strict";

        var $defineProperty = __webpack_require__("86cc");
        var createDesc = __webpack_require__("4630");

        module.exports = function (object, index, value) {
          if (index in object)
            $defineProperty.f(object, index, createDesc(0, value));
          else object[index] = value;
        };

        /***/
      },

      /***/ f559: /***/ function (module, exports, __webpack_require__) {
        "use strict";
        // 21.1.3.18 String.prototype.startsWith(searchString [, position ])

        var $export = __webpack_require__("5ca1");
        var toLength = __webpack_require__("9def");
        var context = __webpack_require__("d2c8");
        var STARTS_WITH = "startsWith";
        var $startsWith = ""[STARTS_WITH];

        $export(
          $export.P + $export.F * __webpack_require__("5147")(STARTS_WITH),
          "String",
          {
            startsWith: function startsWith(searchString /* , position = 0 */) {
              var that = context(this, searchString, STARTS_WITH);
              var index = toLength(
                Math.min(
                  arguments.length > 1 ? arguments[1] : undefined,
                  that.length
                )
              );
              var search = String(searchString);
              return $startsWith
                ? $startsWith.call(that, search, index)
                : that.slice(index, index + search.length) === search;
            },
          }
        );

        /***/
      },

      /***/ f6fd: /***/ function (module, exports) {
        // document.currentScript polyfill by Adam Miller

        // MIT license

        (function (document) {
          var currentScript = "currentScript",
            scripts = document.getElementsByTagName("script"); // Live NodeList collection

          // If browser needs currentScript polyfill, add get currentScript() to the document object
          if (!(currentScript in document)) {
            Object.defineProperty(document, currentScript, {
              get: function () {
                // IE 6-10 supports script readyState
                // IE 10+ support stack trace
                try {
                  throw new Error();
                } catch (err) {
                  // Find the second match for the "at" string to get file src url from stack.
                  // Specifically works with the format of stack traces in IE.
                  var i,
                    res = (/.*at [^\(]*\((.*):.+:.+\)$/gi.exec(err.stack) || [
                      false,
                    ])[1];

                  // For all scripts on the page, if src matches or if ready state is interactive, return the script tag
                  for (i in scripts) {
                    if (
                      scripts[i].src == res ||
                      scripts[i].readyState == "interactive"
                    ) {
                      return scripts[i];
                    }
                  }

                  // If no match, return null
                  return null;
                }
              },
            });
          }
        })(document);

        /***/
      },

      /***/ f751: /***/ function (module, exports, __webpack_require__) {
        // 19.1.3.1 Object.assign(target, source)
        var $export = __webpack_require__("5ca1");

        $export($export.S + $export.F, "Object", {
          assign: __webpack_require__("7333"),
        });

        /***/
      },

      /***/ fa5b: /***/ function (module, exports, __webpack_require__) {
        module.exports = __webpack_require__("5537")(
          "native-function-to-string",
          Function.toString
        );

        /***/
      },

      /***/ fab2: /***/ function (module, exports, __webpack_require__) {
        var document = __webpack_require__("7726").document;
        module.exports = document && document.documentElement;

        /***/
      },

      /***/ fb15: /***/ function (
        module,
        __webpack_exports__,
        __webpack_require__
      ) {
        "use strict";
        // ESM COMPAT FLAG
        __webpack_require__.r(__webpack_exports__);

        // CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js
        // This file is imported into lib/wc client bundles.

        if (typeof window !== "undefined") {
          if (true) {
            __webpack_require__("f6fd");
          }

          var setPublicPath_i;
          if (
            (setPublicPath_i = window.document.currentScript) &&
            (setPublicPath_i = setPublicPath_i.src.match(
              /(.+\/)[^/]+\.js(\?.*)?$/
            ))
          ) {
            __webpack_require__.p = setPublicPath_i[1]; // eslint-disable-line
          }
        }

        // Indicate to webpack that this file can be concatenated
        /* harmony default export */ var setPublicPath = null;

        // EXTERNAL MODULE: ./node_modules/core-js/modules/es6.function.name.js
        var es6_function_name = __webpack_require__("7f7f");

        // EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom.iterable.js
        var web_dom_iterable = __webpack_require__("ac6a");

        // EXTERNAL MODULE: ./node_modules/core-js/modules/es6.regexp.constructor.js
        var es6_regexp_constructor = __webpack_require__("3b2b");

        // EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.iterator.js
        var es6_array_iterator = __webpack_require__("cadf");

        // EXTERNAL MODULE: ./node_modules/core-js/modules/es7.object.values.js
        var es7_object_values = __webpack_require__("8615");

        // EXTERNAL MODULE: ./node_modules/core-js/modules/es6.regexp.to-string.js
        var es6_regexp_to_string = __webpack_require__("6b54");

        // CONCATENATED MODULE: ./packages/utils/validate.js

        function isPlainObject(obj) {
          return Object.prototype.toString.call(obj) === "[object Object]";
        }
        function isString(str) {
          return typeof str == "string";
        }
        function isToday(time) {
          return new Date().getTime() - time < 86400000;
        }
        function isEmpty(obj) {
          if (!obj) return true;
          if (Array.isArray(obj) && obj.length == 0) return true;
          if (isPlainObject(obj) && Object.values(obj).length == 0) return true;
          return false;
        }
        function isUrl(str) {
          var reg =
            "^((https|http|ftp|rtsp|mms)?://)" +
            "?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?" +
            //ftp的user@
            "(([0-9]{1,3}.){3}[0-9]{1,3}" +
            // IP形式的URL- 199.194.52.184
            "|" +
            // 允许IP和DOMAIN（域名）
            "([0-9a-z_!~*'()-]+.)*" +
            // 域名- www.
            "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]." +
            // 二级域名
            "[a-z]{2,6})" +
            // first level domain- .com or .museum
            "(:[0-9]{1,4})?" +
            // 端口- :80
            "((/?)|" +
            // 如果没有文件名，则不需要斜杠
            "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$";
          return new RegExp(reg).test(str) ? true : false;
        }
        function isFunction(val) {
          return val && typeof val === "function";
        }
        function isEng(val) {
          return /^[A-Za-z]+$/.test(val);
        }
        // EXTERNAL MODULE: ./node_modules/regenerator-runtime/runtime.js
        var runtime = __webpack_require__("96cf");

        // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js
        function asyncGeneratorStep(
          gen,
          resolve,
          reject,
          _next,
          _throw,
          key,
          arg
        ) {
          try {
            var info = gen[key](arg);
            var value = info.value;
          } catch (error) {
            reject(error);
            return;
          }
          if (info.done) {
            resolve(value);
          } else {
            Promise.resolve(value).then(_next, _throw);
          }
        }
        function _asyncToGenerator(fn) {
          return function () {
            var self = this,
              args = arguments;
            return new Promise(function (resolve, reject) {
              var gen = fn.apply(self, args);
              function _next(value) {
                asyncGeneratorStep(
                  gen,
                  resolve,
                  reject,
                  _next,
                  _throw,
                  "next",
                  value
                );
              }
              function _throw(err) {
                asyncGeneratorStep(
                  gen,
                  resolve,
                  reject,
                  _next,
                  _throw,
                  "throw",
                  err
                );
              }
              _next(undefined);
            });
          };
        }
        // EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.keys.js
        var es6_object_keys = __webpack_require__("456d");

        // EXTERNAL MODULE: ./node_modules/core-js/modules/es7.array.includes.js
        var es7_array_includes = __webpack_require__("6762");

        // EXTERNAL MODULE: ./node_modules/core-js/modules/es6.string.includes.js
        var es6_string_includes = __webpack_require__("2fdb");

        // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/popover.vue?vue&type=script&lang=js

        var popoverCloseQueue = [];

        var triggerEvents = {
          hover: function hover(el) {},
          focus: function focus(el) {
            var _this = this;
            el.addEventListener("focus", function (e) {
              _this.changeVisible();
            });
            el.addEventListener("blur", function (e) {
              _this.changeVisible();
            });
          },
          click: function click(el) {
            var _this2 = this;
            el.addEventListener("click", function (e) {
              e.stopPropagation();
              contextmenu.hide();
              _this2.changeVisible();
            });
          },
          contextmenu: function contextmenu(el) {
            var _this3 = this;
            el.addEventListener("contextmenu", function (e) {
              e.preventDefault();
              _this3.changeVisible();
            });
          },
        };
        /* harmony default export */ var popovervue_type_script_lang_js = {
          name: "LemonPopover",
          props: {
            trigger: {
              type: String,
              default: "click",
              validator: function validator(val) {
                return Object.keys(triggerEvents).includes(val);
              },
            },
          },
          data: function data() {
            return {
              popoverStyle: {},
              visible: false,
            };
          },
          created: function created() {
            document.addEventListener("click", this._documentClickEvent);
            popoverCloseQueue.push(this.close);
          },
          mounted: function mounted() {
            triggerEvents[this.trigger].call(this, this.$slots.default[0].elm);
          },
          render: function render() {
            var h = arguments[0];
            return h(
              "span",
              {
                style: "position:relative",
              },
              [
                h(
                  "transition",
                  {
                    attrs: {
                      name: "lemon-slide-top",
                    },
                  },
                  [
                    this.visible &&
                      h(
                        "div",
                        {
                          class: "lemon-popover",
                          ref: "popover",
                          style: this.popoverStyle,
                          on: {
                            click: function click(e) {
                              return e.stopPropagation();
                            },
                          },
                        },
                        [
                          h(
                            "div",
                            {
                              class: "lemon-popover__content",
                            },
                            [this.$slots.content]
                          ),
                          h("div", {
                            class: "lemon-popover__arrow",
                          }),
                        ]
                      ),
                  ]
                ),
                this.$slots.default,
              ]
            );
          },
          destroyed: function destroyed() {
            document.removeEventListener("click", this._documentClickEvent);
          },
          computed: {},
          watch: {
            visible: (function () {
              var _visible = _asyncToGenerator(
                /*#__PURE__*/ regeneratorRuntime.mark(function _callee(val) {
                  var defaultEl, contentEl;
                  return regeneratorRuntime.wrap(
                    function _callee$(_context) {
                      while (1)
                        switch ((_context.prev = _context.next)) {
                          case 0:
                            if (!val) {
                              _context.next = 6;
                              break;
                            }
                            _context.next = 3;
                            return this.$nextTick();
                          case 3:
                            defaultEl = this.$slots.default[0].elm;
                            contentEl = this.$refs.popover;
                            this.popoverStyle = {
                              top: "-".concat(
                                contentEl.offsetHeight + 10,
                                "px"
                              ),
                              left: "".concat(
                                defaultEl.offsetWidth / 2 -
                                  contentEl.offsetWidth / 2,
                                "px"
                              ),
                            };
                          case 6:
                          case "end":
                            return _context.stop();
                        }
                    },
                    _callee,
                    this
                  );
                })
              );
              function visible(_x) {
                return _visible.apply(this, arguments);
              }
              return visible;
            })(),
          },
          methods: {
            _documentClickEvent: function _documentClickEvent(e) {
              e.stopPropagation();
              if (this.visible) this.close();
            },
            changeVisible: function changeVisible() {
              this.visible ? this.close() : this.open();
            },
            open: function open() {
              this.closeAll();
              this.visible = true;
            },
            closeAll: function closeAll() {
              popoverCloseQueue.forEach(function (callback) {
                return callback();
              });
            },
            close: function close() {
              this.visible = false;
            },
          },
        };
        // CONCATENATED MODULE: ./packages/components/popover.vue?vue&type=script&lang=js
        /* harmony default export */ var components_popovervue_type_script_lang_js =
          popovervue_type_script_lang_js;
        // EXTERNAL MODULE: ./packages/components/popover.vue?vue&type=style&index=0&id=ae0fc606&prod&lang=stylus
        var popovervue_type_style_index_0_id_ae0fc606_prod_lang_stylus =
          __webpack_require__("718e");

        // CONCATENATED MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
        /* globals __VUE_SSR_CONTEXT__ */

        // IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
        // This module is a runtime utility for cleaner component module output and will
        // be included in the final webpack user bundle.

        function normalizeComponent(
          scriptExports,
          render,
          staticRenderFns,
          functionalTemplate,
          injectStyles,
          scopeId,
          moduleIdentifier /* server only */,
          shadowMode /* vue-cli only */
        ) {
          // Vue.extend constructor export interop
          var options =
            typeof scriptExports === "function"
              ? scriptExports.options
              : scriptExports;

          // render functions
          if (render) {
            options.render = render;
            options.staticRenderFns = staticRenderFns;
            options._compiled = true;
          }

          // functional template
          if (functionalTemplate) {
            options.functional = true;
          }

          // scopedId
          if (scopeId) {
            options._scopeId = "data-v-" + scopeId;
          }

          var hook;
          if (moduleIdentifier) {
            // server build
            hook = function (context) {
              // 2.3 injection
              context =
                context || // cached call
                (this.$vnode && this.$vnode.ssrContext) || // stateful
                (this.parent &&
                  this.parent.$vnode &&
                  this.parent.$vnode.ssrContext); // functional
              // 2.2 with runInNewContext: true
              if (!context && typeof __VUE_SSR_CONTEXT__ !== "undefined") {
                context = __VUE_SSR_CONTEXT__;
              }
              // inject component styles
              if (injectStyles) {
                injectStyles.call(this, context);
              }
              // register component module identifier for async chunk inferrence
              if (context && context._registeredComponents) {
                context._registeredComponents.add(moduleIdentifier);
              }
            };
            // used by ssr in case component is cached and beforeCreate
            // never gets called
            options._ssrRegister = hook;
          } else if (injectStyles) {
            hook = shadowMode
              ? function () {
                  injectStyles.call(
                    this,
                    (options.functional ? this.parent : this).$root.$options
                      .shadowRoot
                  );
                }
              : injectStyles;
          }

          if (hook) {
            if (options.functional) {
              // for template-only hot-reload because in that case the render fn doesn't
              // go through the normalizer
              options._injectStyles = hook;
              // register for functional component in vue file
              var originalRender = options.render;
              options.render = function renderWithStyleInjection(h, context) {
                hook.call(context);
                return originalRender(h, context);
              };
            } else {
              // inject component registration as beforeCreate hook
              var existing = options.beforeCreate;
              options.beforeCreate = existing
                ? [].concat(existing, hook)
                : [hook];
            }
          }

          return {
            exports: scriptExports,
            options: options,
          };
        }

        // CONCATENATED MODULE: ./packages/components/popover.vue
        var popover_render, staticRenderFns;

        /* normalize component */

        var popover_component = normalizeComponent(
          components_popovervue_type_script_lang_js,
          popover_render,
          staticRenderFns,
          false,
          null,
          null,
          null
        );

        /* harmony default export */ var popover = popover_component.exports;
        // CONCATENATED MODULE: ./packages/directives/contextmenu.js

        // import Vue from "vue";

        var contextmenu_popover;
        var hidePopover = function hidePopover() {
          if (contextmenu_popover) contextmenu_popover.style.display = "none";
        };
        var showPopover = function showPopover() {
          if (contextmenu_popover) contextmenu_popover.style.display = "block";
        };
        document.addEventListener("click", function (e) {
          hidePopover();
        });
        /* harmony default export */ var contextmenu = {
          hide: hidePopover,
          bind: function bind(el, binding, vnode) {
            el.addEventListener(
              binding.modifiers.click ? "click" : "contextmenu",
              function (e) {
                if (isEmpty(binding.value) || !Array.isArray(binding.value))
                  return;
                if (binding.modifiers.click) e.stopPropagation();
                e.preventDefault();
                popover.methods.closeAll();
                var component;
                var visibleItems = [];
                if (binding.modifiers.message) component = vnode.context;
                else if (binding.modifiers.contact) component = vnode.child;
                if (!contextmenu_popover) {
                  contextmenu_popover = document.createElement("div");
                  contextmenu_popover.className = "lemon-contextmenu";
                  document.body.appendChild(contextmenu_popover);
                }
                contextmenu_popover.innerHTML = binding.value
                  .map(function (item) {
                    var visible;
                    if (isFunction(item.visible)) {
                      visible = item.visible(component);
                    } else {
                      visible =
                        item.visible === undefined ? true : item.visible;
                    }
                    if (visible) {
                      visibleItems.push(item);
                      var icon = item.icon
                        ? '<i class="lemon-contextmenu__icon '.concat(
                            item.icon,
                            '"></i>'
                          )
                        : "";
                      return '<div style="color:'
                        .concat(item.color, '" title="')
                        .concat(item.text, '" class="lemon-contextmenu__item">')
                        .concat(icon, "<span>")
                        .concat(item.text, "</span></div>");
                    }
                    return "";
                  })
                  .join("");
                var menuHeight = contextmenu_popover.offsetHeight;
                var menuWidth = contextmenu_popover.offsetWidth;
                // 获取屏幕可视区域高度
                var windowHeight = window.innerHeight;
                var windowWidth = window.innerWidth;
                var positionTop =
                  e.clientY + menuHeight > windowHeight
                    ? e.pageY - menuHeight - 5
                    : e.pageY;
                var positionLeft =
                  e.clientX + menuWidth > windowWidth
                    ? e.pageX - menuWidth - 5
                    : e.pageX;
                contextmenu_popover.style.top = "".concat(positionTop, "px");
                contextmenu_popover.style.left = "".concat(positionLeft, "px");
                contextmenu_popover.childNodes.forEach(function (node, index) {
                  var _visibleItems$index = visibleItems[index],
                    click = _visibleItems$index.click,
                    render = _visibleItems$index.render;
                  node.addEventListener("click", function (e) {
                    e.stopPropagation();
                    if (isFunction(click)) click(e, component, hidePopover);
                  });

                  // if (isFunction(render)) {
                  //   const ins = Vue.extend({
                  //     render: h => {
                  //       return render(h, component, hidePopover);
                  //     },
                  //   });
                  //   const renderComponent = new ins().$mount();
                  //   node.querySelector("span").innerHTML =
                  //     renderComponent.$el.outerHTML;
                  // }
                });
                showPopover();
              }
            );
          },
        };
        // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/tabs.vue?vue&type=script&lang=js
        /* harmony default export */ var tabsvue_type_script_lang_js = {
          name: "LemonTabs",
          props: {
            activeIndex: String,
          },
          data: function data() {
            return {
              active: this.activeIndex,
            };
          },
          mounted: function mounted() {
            if (!this.active) {
              this.active = this.$slots["tab-pane"][0].data.attrs.index;
            }
          },
          render: function render() {
            var _this = this;
            var h = arguments[0];
            var pane = [];
            var nav = [];
            this.$slots["tab-pane"].map(function (vnode) {
              var _vnode$data$attrs = vnode.data.attrs,
                tab = _vnode$data$attrs.tab,
                index = _vnode$data$attrs.index;
              pane.push(
                h(
                  "div",
                  {
                    class: "lemon-tabs-content__pane",
                    directives: [
                      {
                        name: "show",
                        value: _this.active == index,
                      },
                    ],
                  },
                  [vnode]
                )
              );
              nav.push(
                h(
                  "div",
                  {
                    class: [
                      "lemon-tabs-nav__item",
                      _this.active == index && "lemon-tabs-nav__item--active",
                    ],
                    on: {
                      click: function click() {
                        return _this._handleNavClick(index);
                      },
                    },
                  },
                  [tab]
                )
              );
            });
            return h(
              "div",
              {
                class: "lemon-tabs",
              },
              [
                h(
                  "div",
                  {
                    class: "lemon-tabs-content",
                  },
                  [pane]
                ),
                h(
                  "div",
                  {
                    class: "lemon-tabs-nav",
                  },
                  [nav]
                ),
              ]
            );
          },
          methods: {
            _handleNavClick: function _handleNavClick(index) {
              this.active = index;
            },
          },
        };
        // CONCATENATED MODULE: ./packages/components/tabs.vue?vue&type=script&lang=js
        /* harmony default export */ var components_tabsvue_type_script_lang_js =
          tabsvue_type_script_lang_js;
        // EXTERNAL MODULE: ./packages/components/tabs.vue?vue&type=style&index=0&id=5041e790&prod&lang=stylus
        var tabsvue_type_style_index_0_id_5041e790_prod_lang_stylus =
          __webpack_require__("69bb");

        // CONCATENATED MODULE: ./packages/components/tabs.vue
        var tabs_render, tabs_staticRenderFns;

        /* normalize component */

        var tabs_component = normalizeComponent(
          components_tabsvue_type_script_lang_js,
          tabs_render,
          tabs_staticRenderFns,
          false,
          null,
          null,
          null
        );

        /* harmony default export */ var tabs = tabs_component.exports;
        // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/button.vue?vue&type=script&lang=js
        /* harmony default export */ var buttonvue_type_script_lang_js = {
          name: "LemonButton",
          props: {
            color: {
              type: String,
              default: "default",
            },
            disabled: Boolean,
          },
          render: function render() {
            var h = arguments[0];
            return h(
              "button",
              {
                class: [
                  "lemon-button",
                  "lemon-button--color-".concat(this.color),
                ],
                attrs: {
                  disabled: this.disabled,
                  type: "button",
                },
                on: {
                  click: this._handleClick,
                },
              },
              [this.$slots.default]
            );
          },
          methods: {
            _handleClick: function _handleClick(e) {
              this.$emit("click", e);
            },
          },
        };
        // CONCATENATED MODULE: ./packages/components/button.vue?vue&type=script&lang=js
        /* harmony default export */ var components_buttonvue_type_script_lang_js =
          buttonvue_type_script_lang_js;
        // EXTERNAL MODULE: ./packages/components/button.vue?vue&type=style&index=0&id=5df72ff0&prod&lang=stylus
        var buttonvue_type_style_index_0_id_5df72ff0_prod_lang_stylus =
          __webpack_require__("cc9a");

        // CONCATENATED MODULE: ./packages/components/button.vue
        var button_render, button_staticRenderFns;

        /* normalize component */

        var button_component = normalizeComponent(
          components_buttonvue_type_script_lang_js,
          button_render,
          button_staticRenderFns,
          false,
          null,
          null,
          null
        );

        /* harmony default export */ var components_button =
          button_component.exports;
        // EXTERNAL MODULE: ./node_modules/core-js/modules/es6.number.constructor.js
        var es6_number_constructor = __webpack_require__("c5f6");

        // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/badge.vue?vue&type=script&lang=js

        /* harmony default export */ var badgevue_type_script_lang_js = {
          name: "LemonBadge",
          props: {
            count: [Number, Boolean],
            overflowCount: {
              type: Number,
              default: 99,
            },
          },
          render: function render() {
            var h = arguments[0];
            return h(
              "span",
              {
                class: "lemon-badge",
              },
              [
                this.$slots.default,
                this.count !== 0 &&
                  this.count !== undefined &&
                  h(
                    "span",
                    {
                      class: [
                        "lemon-badge__label",
                        this.isDot && "lemon-badge__label--dot",
                      ],
                    },
                    [this.label]
                  ),
              ]
            );
          },
          computed: {
            isDot: function isDot() {
              return this.count === true;
            },
            label: function label() {
              if (this.isDot) return "";
              return this.count > this.overflowCount
                ? "".concat(this.overflowCount, "+")
                : this.count;
            },
          },
          methods: {},
        };
        // CONCATENATED MODULE: ./packages/components/badge.vue?vue&type=script&lang=js
        /* harmony default export */ var components_badgevue_type_script_lang_js =
          badgevue_type_script_lang_js;
        // EXTERNAL MODULE: ./packages/components/badge.vue?vue&type=style&index=0&id=4e06d65a&prod&lang=stylus
        var badgevue_type_style_index_0_id_4e06d65a_prod_lang_stylus =
          __webpack_require__("93f9");

        // CONCATENATED MODULE: ./packages/components/badge.vue
        var badge_render, badge_staticRenderFns;

        /* normalize component */

        var badge_component = normalizeComponent(
          components_badgevue_type_script_lang_js,
          badge_render,
          badge_staticRenderFns,
          false,
          null,
          null,
          null
        );

        /* harmony default export */ var badge = badge_component.exports;
        // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/avatar.vue?vue&type=script&lang=js

        /* harmony default export */ var avatarvue_type_script_lang_js = {
          name: "LemonAvatar",
          inject: ["IMUI"],
          props: {
            src: String,
            icon: {
              type: String,
              default: "lemon-icon-people",
            },
            circle: {
              type: Boolean,
              default: function _default() {
                return this.IMUI ? this.IMUI.avatarCricle : false;
              },
            },
            size: {
              type: Number,
              default: 32,
            },
          },
          data: function data() {
            return {
              imageFinishLoad: true,
            };
          },
          render: function render() {
            var _this = this;
            var h = arguments[0];
            return h(
              "span",
              {
                style: this.style,
                class: [
                  "lemon-avatar",
                  {
                    "lemon-avatar--circle": this.circle,
                  },
                ],
                on: {
                  click: function click(e) {
                    return _this.$emit("click", e);
                  },
                },
              },
              [
                (this.imageFinishLoad || !this.src) &&
                  h("i", {
                    class: this.icon,
                  }),
                h("img", {
                  attrs: {
                    src: this.src,
                  },
                  on: {
                    load: this._handleLoad,
                  },
                }),
              ]
            );
          },
          computed: {
            style: function style() {
              var size = "".concat(this.size, "px");
              return {
                width: size,
                height: size,
                lineHeight: size,
                fontSize: "".concat(this.size / 2, "px"),
              };
            },
          },
          methods: {
            _handleLoad: function _handleLoad() {
              this.imageFinishLoad = false;
            },
          },
        };
        // CONCATENATED MODULE: ./packages/components/avatar.vue?vue&type=script&lang=js
        /* harmony default export */ var components_avatarvue_type_script_lang_js =
          avatarvue_type_script_lang_js;
        // EXTERNAL MODULE: ./packages/components/avatar.vue?vue&type=style&index=0&id=72d5ddac&prod&lang=stylus
        var avatarvue_type_style_index_0_id_72d5ddac_prod_lang_stylus =
          __webpack_require__("e003");

        // CONCATENATED MODULE: ./packages/components/avatar.vue
        var avatar_render, avatar_staticRenderFns;

        /* normalize component */

        var avatar_component = normalizeComponent(
          components_avatarvue_type_script_lang_js,
          avatar_render,
          avatar_staticRenderFns,
          false,
          null,
          null,
          null
        );

        /* harmony default export */ var avatar = avatar_component.exports;
        // EXTERNAL MODULE: ./node_modules/@vue/babel-helper-vue-jsx-merge-props/dist/helper.js
        var helper = __webpack_require__("2638");
        var helper_default = /*#__PURE__*/ __webpack_require__.n(helper);

        // EXTERNAL MODULE: ./node_modules/core-js/modules/es7.object.get-own-property-descriptors.js
        var es7_object_get_own_property_descriptors =
          __webpack_require__("8e6e");

        // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/typeof.js
        function _typeof(o) {
          "@babel/helpers - typeof";

          return (
            (_typeof =
              "function" == typeof Symbol && "symbol" == typeof Symbol.iterator
                ? function (o) {
                    return typeof o;
                  }
                : function (o) {
                    return o &&
                      "function" == typeof Symbol &&
                      o.constructor === Symbol &&
                      o !== Symbol.prototype
                      ? "symbol"
                      : typeof o;
                  }),
            _typeof(o)
          );
        }
        // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toPrimitive.js

        function toPrimitive(t, r) {
          if ("object" != _typeof(t) || !t) return t;
          var e = t[Symbol.toPrimitive];
          if (void 0 !== e) {
            var i = e.call(t, r || "default");
            if ("object" != _typeof(i)) return i;
            throw new TypeError("@@toPrimitive must return a primitive value.");
          }
          return ("string" === r ? String : Number)(t);
        }
        // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js

        function toPropertyKey(t) {
          var i = toPrimitive(t, "string");
          return "symbol" == _typeof(i) ? i : String(i);
        }
        // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js

        function _defineProperty(obj, key, value) {
          key = toPropertyKey(key);
          if (key in obj) {
            Object.defineProperty(obj, key, {
              value: value,
              enumerable: true,
              configurable: true,
              writable: true,
            });
          } else {
            obj[key] = value;
          }
          return obj;
        }
        // EXTERNAL MODULE: ./node_modules/core-js/modules/es6.regexp.replace.js
        var es6_regexp_replace = __webpack_require__("a481");

        // CONCATENATED MODULE: ./packages/utils/index.js

        function ownKeys(e, r) {
          var t = Object.keys(e);
          if (Object.getOwnPropertySymbols) {
            var o = Object.getOwnPropertySymbols(e);
            r &&
              (o = o.filter(function (r) {
                return Object.getOwnPropertyDescriptor(e, r).enumerable;
              })),
              t.push.apply(t, o);
          }
          return t;
        }
        function _objectSpread(e) {
          for (var r = 1; r < arguments.length; r++) {
            var t = null != arguments[r] ? arguments[r] : {};
            r % 2
              ? ownKeys(Object(t), !0).forEach(function (r) {
                  _defineProperty(e, r, t[r]);
                })
              : Object.getOwnPropertyDescriptors
              ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))
              : ownKeys(Object(t)).forEach(function (r) {
                  Object.defineProperty(
                    e,
                    r,
                    Object.getOwnPropertyDescriptor(t, r)
                  );
                });
          }
          return e;
        }

        function messageToHtml() {}
        function messageToText() {}
        /**
         * 使用某个组件上的作用域插槽
         * @param {VueComponent} inject
         * @param {String} slotName
         * @param {Node} defaultElement
         * @param {Object} props
         */
        function useScopedSlot(slot, def, props) {
          return slot ? slot(props) : def;
        }
        function padZero(val) {
          return val < 10 ? "0".concat(val) : val;
        }
        function hoursTimeFormat(t) {
          var date = new Date(t);
          var nowDate = new Date();
          var Y = function Y(t) {
            return t.getFullYear();
          };
          var MD = function MD(t) {
            return "".concat(t.getMonth() + 1, "-").concat(t.getDate());
          };
          var dateY = Y(date);
          var nowDateY = Y(nowDate);
          var format;
          if (dateY !== nowDateY) {
            format = "y年m月d日 h:i";
          } else if (
            "".concat(dateY, "-").concat(MD(date)) ===
            "".concat(nowDateY, "-").concat(MD(nowDate))
          ) {
            format = "h:i";
          } else {
            format = "m月d日 h:i";
          }
          return timeFormat(t, format);
        }
        function timeFormat(t, format) {
          if (!format) format = "y-m-d h:i:s";
          if (t) t = new Date(t);
          else t = new Date();
          var formatArr = [
            t.getFullYear().toString(),
            padZero((t.getMonth() + 1).toString()),
            padZero(t.getDate().toString()),
            padZero(t.getHours().toString()),
            padZero(t.getMinutes().toString()),
            padZero(t.getSeconds().toString()),
          ];
          var reg = "ymdhis";
          for (var i = 0; i < formatArr.length; i++) {
            format = format.replace(reg.charAt(i), formatArr[i]);
          }
          return format;
        }
        function funCall(event, callback) {
          if (isFunction(event)) {
            event(function () {
              callback();
            });
          } else {
            callback();
          }
        }
        /**
         * 获取数组相交的值组成新数组
         * @param {Array} a
         * @param {Array} b
         */
        function arrayIntersect(a, b) {
          return a.filter(function (x) {
            return b.includes(x);
          });
        }
        //清除字符串内的所有HTML标签
        function clearHtml(str) {
          return str.replace(/<.*?>/gi, "");
        }
        //清除字符串内的所有HTML标签，除了IMG
        function clearHtmlExcludeImg(str) {
          return str.replace(/<(?!img).*?>/gi, "");
        }
        function error(text) {
          throw new Error(text);
        }
        function cloneDeep(obj) {
          var newobj = _objectSpread({}, obj);
          for (var key in newobj) {
            var val = newobj[key];
            if (isPlainObject(val)) {
              newobj[key] = cloneDeep(val);
            }
          }
          return newobj;
        }
        function mergeDeep(o1, o2) {
          for (var key in o2) {
            if (isPlainObject(o1[key])) {
              o1[key] = mergeDeep(o1[key], o2[key]);
            } else {
              o1[key] = o2[key];
            }
          }
          return o1;
        }
        function formatByte(value) {
          if (null == value || value == "") {
            return "0 Bytes";
          }
          var unitArr = ["B", "K", "M", "G", "T", "P", "E", "Z", "Y"];
          var index = 0;
          var srcsize = parseFloat(value);
          index = Math.floor(Math.log(srcsize) / Math.log(1024));
          var size = srcsize / Math.pow(1024, index);
          size = parseFloat(size.toFixed(2));
          return size + unitArr[index];
        }
        function generateUUID() {
          var d = new Date().getTime();
          if (
            window.performance &&
            typeof window.performance.now === "function"
          ) {
            d += performance.now(); //use high-precision timer if available
          }
          var uuid = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(
            /[xy]/g,
            function (c) {
              var r = (d + Math.random() * 16) % 16 | 0;
              d = Math.floor(d / 16);
              return (c == "x" ? r : (r & 0x3) | 0x8).toString(16);
            }
          );
          return uuid;
        }
        // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/contact.vue?vue&type=script&lang=js

        /* harmony default export */ var contactvue_type_script_lang_js = {
          name: "LemonContact",
          components: {},
          inject: {
            IMUI: {
              from: "IMUI",
              default: function _default() {
                return this;
              },
            },
          },
          data: function data() {
            return {};
          },
          props: {
            contact: Object,
            simple: Boolean,
            timeFormat: {
              type: Function,
              default: function _default(val) {
                return timeFormat(val, isToday(val) ? "h:i" : "y/m/d");
              },
            },
          },
          render: function render() {
            var _this = this;
            var h = arguments[0];
            return h(
              "div",
              {
                class: [
                  "lemon-contact",
                  {
                    "lemon-contact--name-center": this.simple,
                  },
                ],
                attrs: {
                  title:
                    this.contact.displayName === "Raingad-IM公告群"
                      ? "手慧智言交流群"
                      : this.contact.displayName,
                },
                on: {
                  click: function click(e) {
                    return _this._handleClick(e, _this.contact);
                  },
                },
              },
              [
                useScopedSlot(
                  this.$scopedSlots.default,
                  this._renderInner(),
                  this.contact
                ),
              ]
            );
          },
          created: function created() {},
          mounted: function mounted() {},
          computed: {},
          watch: {},
          methods: {
            _renderInner: function _renderInner() {
              var h = this.$createElement;
              var contact = this.contact;
              return [
                h(
                  "lemon-badge",
                  {
                    attrs: {
                      count: !this.simple ? contact.unread : 0,
                    },
                    class: "lemon-contact__avatar",
                  },
                  [
                    h("lemon-avatar", {
                      attrs: {
                        size: 40,
                        src: contact.avatar,
                      },
                    }),
                  ]
                ),
                h(
                  "div",
                  {
                    class: "lemon-contact__inner",
                  },
                  [
                    h(
                      "p",
                      {
                        class: "lemon-contact__label",
                      },
                      [
                        h(
                          "span",
                          {
                            class: "lemon-contact__name",
                          },
                          [e.displayName]
                        ),
                        !this.simple &&
                          h(
                            "span",
                            {
                              class: "lemon-contact__time",
                            },
                            [this.timeFormat(contact.lastSendTime)]
                          ),
                      ]
                    ),
                    !this.simple &&
                      h(
                        "p",
                        {
                          class: "lemon-contact__content",
                        },
                        [
                          isString(contact.lastContent)
                            ? h(
                                "span",
                                helper_default()([
                                  {},
                                  {
                                    domProps: {
                                      innerHTML: contact.lastContent,
                                    },
                                  },
                                ])
                              )
                            : contact.lastContent,
                        ]
                      ),
                  ]
                ),
              ];
            },
            _handleClick: function _handleClick(e, data) {
              this.$emit("click", data);
            },
          },
        };
        // CONCATENATED MODULE: ./packages/components/contact.vue?vue&type=script&lang=js
        /* harmony default export */ var components_contactvue_type_script_lang_js =
          contactvue_type_script_lang_js;
        // EXTERNAL MODULE: ./packages/components/contact.vue?vue&type=style&index=0&id=6d9458c0&prod&lang=stylus
        var contactvue_type_style_index_0_id_6d9458c0_prod_lang_stylus =
          __webpack_require__("8fb6");

        // CONCATENATED MODULE: ./packages/components/contact.vue
        var contact_render, contact_staticRenderFns;

        /* normalize component */

        var contact_component = normalizeComponent(
          components_contactvue_type_script_lang_js,
          contact_render,
          contact_staticRenderFns,
          false,
          null,
          null,
          null
        );

        /* harmony default export */ var components_contact =
          contact_component.exports;
        // EXTERNAL MODULE: ./node_modules/core-js/modules/es6.string.iterator.js
        var es6_string_iterator = __webpack_require__("5df3");

        // EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.from.js
        var es6_array_from = __webpack_require__("1c4c");

        // EXTERNAL MODULE: ./node_modules/chatarea/lib/ChatArea.js
        var ChatArea = __webpack_require__("9204");

        // CONCATENATED MODULE: ./node_modules/chatarea/index.js

        const chatarea_ChatArea = window.ChatArea;
        /* harmony default export */ var chatarea = chatarea_ChatArea;
        // EXTERNAL MODULE: ./node_modules/chatarea/lib/ChatArea.css
        var lib_ChatArea = __webpack_require__("6fb5");

        // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/editor.vue?vue&type=script&lang=js

        function editorvue_type_script_lang_js_ownKeys(e, r) {
          var t = Object.keys(e);
          if (Object.getOwnPropertySymbols) {
            var o = Object.getOwnPropertySymbols(e);
            r &&
              (o = o.filter(function (r) {
                return Object.getOwnPropertyDescriptor(e, r).enumerable;
              })),
              t.push.apply(t, o);
          }
          return t;
        }
        function editorvue_type_script_lang_js_objectSpread(e) {
          for (var r = 1; r < arguments.length; r++) {
            var t = null != arguments[r] ? arguments[r] : {};
            r % 2
              ? editorvue_type_script_lang_js_ownKeys(Object(t), !0).forEach(
                  function (r) {
                    _defineProperty(e, r, t[r]);
                  }
                )
              : Object.getOwnPropertyDescriptors
              ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))
              : editorvue_type_script_lang_js_ownKeys(Object(t)).forEach(
                  function (r) {
                    Object.defineProperty(
                      e,
                      r,
                      Object.getOwnPropertyDescriptor(t, r)
                    );
                  }
                );
          }
          return e;
        }

        // 引入css样式

        var command = function command(_command, val) {
          document.execCommand(_command, false, val);
        };
        var selection = window.getSelection();
        var range;
        var emojiData = [];
        var isInitTool = false;
        /* harmony default export */ var editorvue_type_script_lang_js = {
          name: "LemonEditor",
          inject: {
            IMUI: {
              from: "IMUI",
              default: function _default() {
                return this;
              },
            },
          },
          components: {},
          props: {
            tools: {
              type: Array,
              default: function _default() {
                return [];
              },
            },
            sendText: {
              type: String,
              default: "发 送",
            },
            wrapKey: {
              type: Function,
              default: function _default(e) {
                return e.keyCode == 13 && e.ctrlKey === true;
              },
            },
            sendKey: {
              type: Function,
              default: function _default(e) {
                return (
                  e.keyCode == 13 && e.ctrlKey == false && e.shiftKey == false
                );
              },
            },
          },
          data: function data() {
            this.clipboardBlob = null;
            return {
              //剪切板图片URL
              clipboardUrl: "",
              submitDisabled: true,
              //proxyTools: [],
              accept: "",
              chatArea: null,
            };
          },
          created: function created() {
            var _this = this;
            this.IMUI.$on("change-contact", function () {
              _this.closeClipboardImage();
            });
            this.$nextTick(function () {
              _this.chatArea = new chatarea({
                elm: _this.$refs.textarea,
                // 从dom上抓取一个元素将其改造
                userList: [
                  // 当输入@键时弹出人员选择的列表
                ],
                userProps: {
                  // 人员列表数据结构 转接差异key值
                  id: "id",
                  name: "displayName",
                  avatar: "avatar",
                  pinyin: "name_py",
                },
                placeholder: "",
                needCallSpace: true,
                wrapKeyFun: function wrapKeyFun(event) {
                  return _this.wrapKey(event);
                },
                sendKeyFun: function sendKeyFun(event) {
                  return _this.sendKey(event);
                },
              });
              _this.chatArea.revisePCCheckDialogLabel({
                title: "选择要@的人",
                searchPlaceholder: "搜素人员名称",
                searchEmptyLabel: "没有匹配到任何结果",
                userTagTitle: "成员列表",
                checkAllLabel: "全选",
                confirmLabel: "确定",
                cancelLabel: "取消",
              });
              _this.chatArea.richText.addEventListener("blur", function (e) {
                setTimeout(_this.chatArea.winClick, 200);
              });
              _this.chatArea.richText.addEventListener("drop", function (e) {
                var dataTransfer = e.dataTransfer;
                var files = dataTransfer.files;
                Array.from(files).forEach(function (file) {
                  _this.$emit("upload", file);
                });
              });
              // 监听发送键
              _this.chatArea.enterSend = function () {
                // 在此处执行你对发送消息的处理
                if (_this.submitDisabled == false) {
                  _this._handleSend();
                }
              };
            });
          },
          render: function render() {
            var _this2 = this;
            var h = arguments[0];
            var toolLeft = [];
            var toolRight = [];
            this.proxyTools.forEach(function (_ref) {
              var name = _ref.name,
                title = _ref.title,
                render = _ref.render,
                click = _ref.click,
                isRight = _ref.isRight;
              click = click || new Function();
              var classes = [
                "lemon-editor__tool-item",
                {
                  "lemon-editor__tool-item--right": isRight,
                },
              ];
              var node;
              if (name == "emoji") {
                node =
                  emojiData.length == 0
                    ? ""
                    : h(
                        "lemon-popover",
                        {
                          class: "lemon-editor__emoji",
                        },
                        [
                          h(
                            "template",
                            {
                              slot: "content",
                            },
                            [_this2._renderEmojiTabs()]
                          ),
                          h(
                            "div",
                            {
                              class: classes,
                              attrs: {
                                title: title,
                              },
                            },
                            [render()]
                          ),
                        ]
                      );
              } else {
                node = h(
                  "div",
                  {
                    class: classes,
                    on: {
                      click: click,
                    },
                    attrs: {
                      title: title,
                    },
                  },
                  [render()]
                );
              }
              if (isRight) {
                toolRight.push(node);
              } else {
                toolLeft.push(node);
              }
            });
            return h(
              "div",
              {
                class: "lemon-editor",
              },
              [
                this.clipboardUrl &&
                  h(
                    "div",
                    {
                      class: "lemon-editor__clipboard-image",
                    },
                    [
                      h("img", {
                        attrs: {
                          src: this.clipboardUrl,
                        },
                      }),
                      h("div", [
                        h(
                          "lemon-button",
                          {
                            style: {
                              marginRight: "10px",
                            },
                            on: {
                              click: this.closeClipboardImage,
                            },
                            attrs: {
                              color: "grey",
                            },
                          },
                          ["\u53D6\u6D88"]
                        ),
                        h(
                          "lemon-button",
                          {
                            on: {
                              click: this.sendClipboardImage,
                            },
                          },
                          ["\u53D1\u9001\u56FE\u7247"]
                        ),
                      ]),
                    ]
                  ),
                h("input", {
                  style: "display:none",
                  attrs: {
                    type: "file",
                    multiple: "multiple",
                    accept: this.accept,
                  },
                  ref: "fileInput",
                  on: {
                    change: this._handleChangeFile,
                  },
                }),
                h(
                  "div",
                  {
                    class: "lemon-editor__tool",
                  },
                  [
                    h(
                      "div",
                      {
                        class: "lemon-editor__tool-left",
                      },
                      [toolLeft]
                    ),
                    h(
                      "div",
                      {
                        class: "lemon-editor__tool-right",
                      },
                      [toolRight]
                    ),
                  ]
                ),
                h(
                  "div",
                  {
                    class: "lemon-editor__inner",
                  },
                  [
                    h("div", {
                      class: "lemon-editor__input",
                      ref: "textarea",
                      on: {
                        keyup: this._handleKeyup,
                        keydown: this._handleKeydown,
                        paste: this._handlePaste,
                        click: this._handleClick,
                        input: this._handleInput,
                      },
                      attrs: {
                        spellcheck: "false",
                      },
                    }),
                  ]
                ),
                h(
                  "div",
                  {
                    class: "lemon-editor__footer",
                  },
                  [
                    h(
                      "div",
                      {
                        class: "lemon-editor__tip",
                      },
                      [
                        useScopedSlot(
                          this.IMUI.$scopedSlots["editor-footer"],
                          "使用 ctrl + enter 换行"
                        ),
                      ]
                    ),
                    h(
                      "div",
                      {
                        class: "lemon-editor__submit",
                      },
                      [
                        h(
                          "lemon-button",
                          {
                            attrs: {
                              disabled: this.submitDisabled,
                            },
                            on: {
                              click: this._handleSend,
                            },
                          },
                          [this.sendText]
                        ),
                      ]
                    ),
                  ]
                ),
              ]
            );
          },
          computed: {
            proxyTools: function proxyTools() {
              var _this3 = this;
              var h = this.$createElement;
              if (!this.tools) return [];
              var defaultTools = [
                {
                  name: "emoji",
                  title: "表情",
                  click: null,
                  render: function render(menu) {
                    return h("i", {
                      class: "lemon-icon-emoji",
                    });
                  },
                },
                {
                  name: "uploadFile",
                  title: "文件上传",
                  click: function click() {
                    return _this3.selectFile("*");
                  },
                  render: function render(menu) {
                    return h("i", {
                      class: "lemon-icon-folder",
                    });
                  },
                },
                {
                  name: "uploadImage",
                  title: "图片上传",
                  click: function click() {
                    return _this3.selectFile("image/*");
                  },
                  render: function render(menu) {
                    return h("i", {
                      class: "lemon-icon-image",
                    });
                  },
                },
              ];
              var tools = [];
              if (Array.isArray(this.tools)) {
                var indexMap = {
                  emoji: 0,
                  uploadFile: 1,
                  uploadImage: 2,
                };
                var indexKeys = Object.keys(indexMap);
                tools = this.tools.map(function (item) {
                  if (indexKeys.includes(item.name)) {
                    return editorvue_type_script_lang_js_objectSpread(
                      editorvue_type_script_lang_js_objectSpread(
                        {},
                        defaultTools[indexMap[item.name]]
                      ),
                      item
                    );
                  }
                  return item;
                });
              } else {
                tools = defaultTools;
              }
              return tools;
            },
          },
          methods: {
            closeClipboardImage: function closeClipboardImage() {
              this.clipboardUrl = "";
              this.clipboardBlob = null;
            },
            sendClipboardImage: function sendClipboardImage() {
              if (!this.clipboardBlob) return;
              this.$emit("upload", this.clipboardBlob);
              this.closeClipboardImage();
            },
            saveRangeToLast: function saveRangeToLast() {
              if (!range) {
                range = document.createRange();
              }
              range.selectNodeContents(textarea.value);
              range.collapse(false);
              selection.removeAllRanges();
              selection.addRange(range);
            },
            inertContent: function inertContent(val) {
              var toLast =
                arguments.length > 1 && arguments[1] !== undefined
                  ? arguments[1]
                  : false;
              if (toLast) saveRangeToLast();
              this.focusRange();
              command("insertHTML", val);
              this.saveRange();
            },
            saveRange: function saveRange() {
              range = selection.getRangeAt(0);
            },
            focusRange: function focusRange() {
              this.$refs.textarea.focus();
              if (range) {
                selection.removeAllRanges();
                selection.addRange(range);
              }
            },
            _handleClick: function _handleClick() {
              this.saveRange();
            },
            _handleInput: function _handleInput() {
              this._checkSubmitDisabled();
            },
            _renderEmojiTabs: function _renderEmojiTabs() {
              var _this4 = this;
              var h = this.$createElement;
              var renderImageGrid = function renderImageGrid(items) {
                return items.map(function (item) {
                  return h("img", {
                    attrs: {
                      src: item.src,
                      title: item.title,
                    },
                    class: "lemon-editor__emoji-item",
                    on: {
                      click: function click() {
                        return _this4._handleSelectEmoji(item);
                      },
                    },
                  });
                });
              };
              if (emojiData[0].label) {
                var nodes = emojiData.map(function (item, index) {
                  return h(
                    "div",
                    {
                      slot: "tab-pane",
                      attrs: {
                        index: index,
                        tab: item.label,
                      },
                    },
                    [renderImageGrid(item.children)]
                  );
                });
                return h(
                  "lemon-tabs",
                  {
                    style: "width: 412px",
                  },
                  [nodes]
                );
              } else {
                return h(
                  "div",
                  {
                    class: "lemon-tabs-content",
                    style: "width:406px",
                  },
                  [renderImageGrid(emojiData)]
                );
              }
            },
            _handleSelectEmoji: function _handleSelectEmoji(item) {
              this.chatArea.insertHtml(
                '<img emoji-name="'
                  .concat(item.name, '" src="')
                  .concat(item.src, '"></img>')
              );
              this._checkSubmitDisabled();
            },
            selectFile: (function () {
              var _selectFile = _asyncToGenerator(
                /*#__PURE__*/ regeneratorRuntime.mark(function _callee(accept) {
                  return regeneratorRuntime.wrap(
                    function _callee$(_context) {
                      while (1)
                        switch ((_context.prev = _context.next)) {
                          case 0:
                            this.accept = accept;
                            _context.next = 3;
                            return this.$nextTick();
                          case 3:
                            this.$refs.fileInput.click();
                          case 4:
                          case "end":
                            return _context.stop();
                        }
                    },
                    _callee,
                    this
                  );
                })
              );
              function selectFile(_x) {
                return _selectFile.apply(this, arguments);
              }
              return selectFile;
            })(),
            _handlePaste: function _handlePaste(e) {
              e.preventDefault();
              var clipboardData = e.clipboardData || window.clipboardData;
              var text = clipboardData.getData("Text");
              if (text) {
                this.submitDisabled = false;
              } else {
                var _this$_getClipboardBl =
                    this._getClipboardBlob(clipboardData),
                  blob = _this$_getClipboardBl.blob,
                  blobUrl = _this$_getClipboardBl.blobUrl;
                this.clipboardBlob = blob;
                this.clipboardUrl = blobUrl;
              }
            },
            _getClipboardBlob: function _getClipboardBlob(clipboard) {
              var blob, blobUrl;
              for (var i = 0; i < clipboard.items.length; ++i) {
                if (
                  clipboard.items[i].kind == "file" &&
                  clipboard.items[i].type.indexOf("image/") !== -1
                ) {
                  blob = clipboard.items[i].getAsFile();
                  blobUrl = (window.URL || window.webkitURL).createObjectURL(
                    blob
                  );
                }
              }
              return {
                blob: blob,
                blobUrl: blobUrl,
              };
            },
            _handleKeyup: function _handleKeyup(e) {
              this.saveRange();
              this._checkSubmitDisabled();
            },
            _handleKeydown: function _handleKeydown(e) {
              if (e.keyCode == 13 || (e.keyCode == 13 && e.shiftKey)) {
                e.preventDefault();
              }
              if (this.wrapKey(e)) {
                e.preventDefault();
                command("insertLineBreak");
              }
            },
            getFormatValue: function getFormatValue() {
              return this.IMUI.emojiImageToName(
                this.chatArea.getHtml({
                  needUserId: true,
                })
              );
            },
            _checkSubmitDisabled: function _checkSubmitDisabled() {
              this.submitDisabled = !clearHtmlExcludeImg(
                this.chatArea.getHtml().trim()
              );
            },
            _handleSend: function _handleSend(e) {
              var text = this.getFormatValue();
              this.$emit("send", text);
              this.clear();
              this._checkSubmitDisabled();
            },
            _handleChangeFile: function _handleChangeFile(e) {
              var _this5 = this;
              var fileInput = this.$refs.fileInput;
              Array.from(fileInput.files).forEach(function (file) {
                _this5.$emit("upload", file);
              });
              fileInput.value = "";
            },
            clear: function clear() {
              this.chatArea.clear();
            },
            initEmoji: function initEmoji(data) {
              emojiData = data;
              this.$forceUpdate();
            },
            setValue: function setValue(val) {
              if (val == "") {
                this.clear();
              } else {
                this.chatArea.reverseAnalysis(this.IMUI.emojiNameToImage(val));
              }
              this._checkSubmitDisabled();
            },
          },
        };
        // CONCATENATED MODULE: ./packages/components/editor.vue?vue&type=script&lang=js
        /* harmony default export */ var components_editorvue_type_script_lang_js =
          editorvue_type_script_lang_js;
        // EXTERNAL MODULE: ./packages/components/editor.vue?vue&type=style&index=0&id=2ac8dde4&prod&lang=stylus
        var editorvue_type_style_index_0_id_2ac8dde4_prod_lang_stylus =
          __webpack_require__("bd33");

        // CONCATENATED MODULE: ./packages/components/editor.vue
        var editor_render, editor_staticRenderFns;

        /* normalize component */

        var editor_component = normalizeComponent(
          components_editorvue_type_script_lang_js,
          editor_render,
          editor_staticRenderFns,
          false,
          null,
          null,
          null
        );

        /* harmony default export */ var editor = editor_component.exports;
        // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/messages.vue?vue&type=script&lang=js

        /* harmony default export */ var messagesvue_type_script_lang_js = {
          name: "LemonMessages",
          components: {},
          props: {
            //是否隐藏消息发送人昵称
            hideName: Boolean,
            //是否隐藏显示消息时间
            hideTime: Boolean,
            reverseUserId: [String, Number],
            timeRange: {
              type: Number,
              default: 1,
            },
            timeFormat: {
              type: Function,
              default: function _default(val) {
                return hoursTimeFormat(val);
              },
            },
            loadingText: {
              type: [String, Function],
            },
            loadendText: {
              type: [String, Function],
              default: "暂无更多消息",
            },
            messages: {
              type: Array,
              default: function _default() {
                return [];
              },
            },
          },
          data: function data() {
            this._lockScroll = false;
            return {
              _loading: false,
              _loadend: false,
              isBottom: true,
            };
          },
          render: function render() {
            var _this = this;
            var h = arguments[0];
            return h(
              "div",
              {
                class: "lemon-messages",
                ref: "wrap",
                on: {
                  scroll: this._handleScroll,
                },
              },
              [
                h(
                  "div",
                  {
                    class: [
                      "lemon-messages__load",
                      "lemon-messages__load--".concat(
                        this._loadend ? "end" : "ing"
                      ),
                    ],
                  },
                  [
                    h(
                      "span",
                      {
                        class: "lemon-messages__loadend",
                      },
                      [
                        isString(this.loadendText)
                          ? this.loadendText
                          : this.loadendText(),
                      ]
                    ),
                    h(
                      "span",
                      {
                        class: "lemon-messages__loading",
                      },
                      [
                        this.loadingText
                          ? isString(this.loadingText)
                            ? this.loadingText
                            : this.loadingText()
                          : h("i", {
                              class: "lemon-icon-loading lemonani-spin",
                            }),
                      ]
                    ),
                  ]
                ),
                this.messages.map(function (message, index) {
                  var node = [];
                  var tagName = "lemon-message-".concat(message.type);
                  var msgComponet = _this.toCamelCase(tagName);
                  if (!_this.$options.components[msgComponet]) {
                    message.type = "text";
                    message.content = "[暂不支持的消息类型]";
                    tagName = "lemon-message-text";
                  }
                  var prev = _this.messages[index - 1];
                  if (
                    prev &&
                    _this.msecRange &&
                    message.sendTime - prev.sendTime > _this.msecRange
                  ) {
                    node.push(
                      h(
                        "lemon-message-event",
                        helper_default()([
                          {},
                          {
                            attrs: {
                              message: {
                                id: "__time__",
                                type: "event",
                                content: hoursTimeFormat(message.sendTime),
                              },
                            },
                          },
                        ])
                      )
                    );
                  }
                  var attrs;
                  if (message.type == "event") {
                    attrs = {
                      message: message,
                    };
                  } else {
                    attrs = {
                      timeFormat: _this.timeFormat,
                      message: message,
                      reverse: _this.reverseUserId == message.fromUser.id,
                      hideTime: _this.hideTime,
                      hideName: _this.hideName,
                    };
                  }
                  node.push(
                    h(
                      tagName,
                      helper_default()([
                        {
                          ref: "message",
                          refInFor: true,
                        },
                        {
                          attrs: attrs,
                        },
                      ])
                    )
                  );
                  return node;
                }),
              ]
            );
          },
          computed: {
            msecRange: function msecRange() {
              return this.timeRange * 1000 * 60;
            },
          },
          watch: {},
          methods: {
            loaded: function loaded() {
              this._loadend = true;
              this.$forceUpdate();
            },
            toCamelCase: function toCamelCase(str) {
              return str.replace(/-([a-z])/g, function (g, letter) {
                return letter.toUpperCase();
              });
            },
            resetLoadState: function resetLoadState() {
              var _this2 = this;
              this._lockScroll = true;
              this._loading = false;
              this._loadend = false;
              setTimeout(function () {
                _this2._lockScroll = false;
              }, 200);
            },
            _handleScroll: (function () {
              var _handleScroll2 = _asyncToGenerator(
                /*#__PURE__*/ regeneratorRuntime.mark(function _callee2(e) {
                  var _this3 = this;
                  var target, hst, scrollTop, contentHeight, wrap;
                  return regeneratorRuntime.wrap(
                    function _callee2$(_context2) {
                      while (1)
                        switch ((_context2.prev = _context2.next)) {
                          case 0:
                            if (!this._lockScroll) {
                              _context2.next = 2;
                              break;
                            }
                            return _context2.abrupt("return");
                          case 2:
                            target = e.target;
                            contextmenu.hide();
                            if (
                              !(
                                target.scrollTop == 0 &&
                                this._loading == false &&
                                this._loadend == false
                              )
                            ) {
                              _context2.next = 10;
                              break;
                            }
                            this._loading = true;
                            _context2.next = 8;
                            return this.$nextTick();
                          case 8:
                            hst = target.scrollHeight;
                            this.$emit(
                              "reach-top",
                              /*#__PURE__*/ (function () {
                                var _ref = _asyncToGenerator(
                                  /*#__PURE__*/ regeneratorRuntime.mark(
                                    function _callee(isEnd) {
                                      return regeneratorRuntime.wrap(
                                        function _callee$(_context) {
                                          while (1)
                                            switch (
                                              (_context.prev = _context.next)
                                            ) {
                                              case 0:
                                                _context.next = 2;
                                                return _this3.$nextTick();
                                              case 2:
                                                target.scrollTop =
                                                  target.scrollHeight - hst;
                                                _this3._loading = false;
                                                _this3._loadend = !!isEnd;
                                              case 5:
                                              case "end":
                                                return _context.stop();
                                            }
                                        },
                                        _callee
                                      );
                                    }
                                  )
                                );
                                return function (_x2) {
                                  return _ref.apply(this, arguments);
                                };
                              })()
                            );
                          case 10:
                            // 当前滚动条垂直位置
                            scrollTop = target.scrollTop; // 内容高度
                            contentHeight = target.scrollHeight;
                            wrap = this.$refs.wrap; // 多预留20px
                            this.isBottom =
                              scrollTop + wrap.offsetHeight >=
                              contentHeight - 20
                                ? true
                                : false;
                            this.$emit("is-bottom", this.isBottom);
                          case 15:
                          case "end":
                            return _context2.stop();
                        }
                    },
                    _callee2,
                    this
                  );
                })
              );
              function _handleScroll(_x) {
                return _handleScroll2.apply(this, arguments);
              }
              return _handleScroll;
            })(),
            scrollToBottom: (function () {
              var _scrollToBottom = _asyncToGenerator(
                /*#__PURE__*/ regeneratorRuntime.mark(function _callee3() {
                  var wrap;
                  return regeneratorRuntime.wrap(
                    function _callee3$(_context3) {
                      while (1)
                        switch ((_context3.prev = _context3.next)) {
                          case 0:
                            _context3.next = 2;
                            return this.$nextTick();
                          case 2:
                            wrap = this.$refs.wrap;
                            if (wrap) {
                              wrap.scrollTop = wrap.scrollHeight;
                            }
                          case 4:
                          case "end":
                            return _context3.stop();
                        }
                    },
                    _callee3,
                    this
                  );
                })
              );
              function scrollToBottom() {
                return _scrollToBottom.apply(this, arguments);
              }
              return scrollToBottom;
            })(),
          },
          created: function created() {},
          mounted: function mounted() {},
        };
        // CONCATENATED MODULE: ./packages/components/messages.vue?vue&type=script&lang=js
        /* harmony default export */ var components_messagesvue_type_script_lang_js =
          messagesvue_type_script_lang_js;
        // EXTERNAL MODULE: ./packages/components/messages.vue?vue&type=style&index=0&id=0e79532a&prod&lang=stylus
        var messagesvue_type_style_index_0_id_0e79532a_prod_lang_stylus =
          __webpack_require__("ed7d");

        // CONCATENATED MODULE: ./packages/components/messages.vue
        var messages_render, messages_staticRenderFns;

        /* normalize component */

        var messages_component = normalizeComponent(
          components_messagesvue_type_script_lang_js,
          messages_render,
          messages_staticRenderFns,
          false,
          null,
          null,
          null
        );

        /* harmony default export */ var messages = messages_component.exports;
        // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/message/basic.vue?vue&type=script&lang=js

        /* harmony default export */ var basicvue_type_script_lang_js = {
          name: "lemonMessageBasic",
          inject: {
            IMUI: {
              from: "IMUI",
              default: function _default() {
                return this;
              },
            },
          },
          props: {
            contextmenu: Array,
            message: {
              type: Object,
              default: function _default() {
                return {};
              },
            },
            timeFormat: {
              type: Function,
              default: function _default() {
                return "";
              },
            },
            reverse: Boolean,
            hideName: Boolean,
            hideTime: Boolean,
          },
          data: function data() {
            return {};
          },
          render: function render() {
            var _this = this;
            var h = arguments[0];
            var _this$message = this.message,
              fromUser = _this$message.fromUser,
              status = _this$message.status,
              sendTime = _this$message.sendTime;
            var hideTitle = this.hideName == true && this.hideTime == true;
            return h(
              "div",
              {
                class: [
                  "lemon-message",
                  "lemon-message--status-".concat(status),
                  {
                    "lemon-message--reverse": this.reverse,
                    "lemon-message--hide-title": hideTitle,
                  },
                ],
              },
              [
                h(
                  "div",
                  {
                    class: "lemon-message__avatar",
                  },
                  [
                    h("lemon-avatar", {
                      attrs: {
                        size: 36,
                        shape: "square",
                        src: fromUser.avatar,
                      },
                      on: {
                        click: function click(e) {
                          _this._emitClick(e, "avatar");
                        },
                      },
                    }),
                  ]
                ),
                h(
                  "div",
                  {
                    class: "lemon-message__inner",
                  },
                  [
                    h(
                      "div",
                      {
                        class: "lemon-message__title",
                      },
                      [
                        this.hideName == false &&
                          h(
                            "span",
                            {
                              on: {
                                click: function click(e) {
                                  _this._emitClick(e, "displayName");
                                },
                              },
                            },
                            [fromUser.displayName]
                          ),
                        this.hideTime == false &&
                          h(
                            "span",
                            {
                              class: "lemon-message__time",
                              on: {
                                click: function click(e) {
                                  _this._emitClick(e, "sendTime");
                                },
                              },
                            },
                            [this.timeFormat(sendTime)]
                          ),
                      ]
                    ),
                    h(
                      "div",
                      {
                        class: "lemon-message__content-flex",
                      },
                      [
                        h(
                          "div",
                          {
                            directives: [
                              {
                                name: "lemon-contextmenu",
                                value: this.IMUI.contextmenu,
                                modifiers: {
                                  message: true,
                                },
                              },
                            ],
                            class: "lemon-message__content",
                            on: {
                              click: function click(e) {
                                _this._emitClick(e, "content");
                              },
                            },
                          },
                          [
                            useScopedSlot(
                              this.$scopedSlots["content"],
                              null,
                              this.message
                            ),
                          ]
                        ),
                        h(
                          "div",
                          {
                            class: "lemon-message__content-after",
                          },
                          [
                            useScopedSlot(
                              this.IMUI.$scopedSlots["message-after"],
                              null,
                              this.message
                            ),
                          ]
                        ),
                        h(
                          "div",
                          {
                            class: "lemon-message__status",
                            on: {
                              click: function click(e) {
                                _this._emitClick(e, "status");
                              },
                            },
                          },
                          [
                            h("i", {
                              class: "lemon-icon-loading lemonani-spin",
                            }),
                            h("i", {
                              class: "lemon-icon-prompt",
                              attrs: {
                                title: "重发消息",
                              },
                              style: {
                                color: "#ff2525",
                                cursor: "pointer",
                              },
                            }),
                          ]
                        ),
                      ]
                    ),
                  ]
                ),
              ]
            );
          },
          created: function created() {},
          mounted: function mounted() {},
          computed: {},
          watch: {},
          methods: {
            _emitClick: function _emitClick(e, key) {
              this.IMUI.$emit("message-click", e, key, this.message, this.IMUI);
            },
          },
        };
        // CONCATENATED MODULE: ./packages/components/message/basic.vue?vue&type=script&lang=js
        /* harmony default export */ var message_basicvue_type_script_lang_js =
          basicvue_type_script_lang_js;
        // EXTERNAL MODULE: ./packages/components/message/basic.vue?vue&type=style&index=0&id=728e23e7&prod&lang=stylus
        var basicvue_type_style_index_0_id_728e23e7_prod_lang_stylus =
          __webpack_require__("4c77");

        // CONCATENATED MODULE: ./packages/components/message/basic.vue
        var basic_render, basic_staticRenderFns;

        /* normalize component */

        var basic_component = normalizeComponent(
          message_basicvue_type_script_lang_js,
          basic_render,
          basic_staticRenderFns,
          false,
          null,
          null,
          null
        );

        /* harmony default export */ var basic = basic_component.exports;
        // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/message/text.vue?vue&type=script&lang=js

        function textvue_type_script_lang_js_ownKeys(e, r) {
          var t = Object.keys(e);
          if (Object.getOwnPropertySymbols) {
            var o = Object.getOwnPropertySymbols(e);
            r &&
              (o = o.filter(function (r) {
                return Object.getOwnPropertyDescriptor(e, r).enumerable;
              })),
              t.push.apply(t, o);
          }
          return t;
        }
        function textvue_type_script_lang_js_objectSpread(e) {
          for (var r = 1; r < arguments.length; r++) {
            var t = null != arguments[r] ? arguments[r] : {};
            r % 2
              ? textvue_type_script_lang_js_ownKeys(Object(t), !0).forEach(
                  function (r) {
                    _defineProperty(e, r, t[r]);
                  }
                )
              : Object.getOwnPropertyDescriptors
              ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))
              : textvue_type_script_lang_js_ownKeys(Object(t)).forEach(
                  function (r) {
                    Object.defineProperty(
                      e,
                      r,
                      Object.getOwnPropertyDescriptor(t, r)
                    );
                  }
                );
          }
          return e;
        }
        /* harmony default export */ var textvue_type_script_lang_js = {
          name: "lemonMessageText",
          inheritAttrs: false,
          inject: ["IMUI"],
          render: function render() {
            var _this = this;
            var h = arguments[0];
            return h(
              "lemon-message-basic",
              helper_default()([
                {
                  class: "lemon-message-text",
                },
                {
                  props: textvue_type_script_lang_js_objectSpread(
                    {},
                    this.$attrs
                  ),
                },
                {
                  scopedSlots: {
                    content: function content(props) {
                      var content = _this.IMUI.emojiNameToImage(props.content);
                      return h(
                        "span",
                        helper_default()([
                          {},
                          {
                            domProps: {
                              innerHTML: content,
                            },
                          },
                        ])
                      );
                    },
                  },
                },
              ])
            );
          },
        };
        // CONCATENATED MODULE: ./packages/components/message/text.vue?vue&type=script&lang=js
        /* harmony default export */ var message_textvue_type_script_lang_js =
          textvue_type_script_lang_js;
        // EXTERNAL MODULE: ./packages/components/message/text.vue?vue&type=style&index=0&id=fc6d50a4&prod&lang=stylus
        var textvue_type_style_index_0_id_fc6d50a4_prod_lang_stylus =
          __webpack_require__("5778");

        // CONCATENATED MODULE: ./packages/components/message/text.vue
        var text_render, text_staticRenderFns;

        /* normalize component */

        var text_component = normalizeComponent(
          message_textvue_type_script_lang_js,
          text_render,
          text_staticRenderFns,
          false,
          null,
          null,
          null
        );

        /* harmony default export */ var message_text = text_component.exports;
        // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/message/image.vue?vue&type=script&lang=js

        function imagevue_type_script_lang_js_ownKeys(e, r) {
          var t = Object.keys(e);
          if (Object.getOwnPropertySymbols) {
            var o = Object.getOwnPropertySymbols(e);
            r &&
              (o = o.filter(function (r) {
                return Object.getOwnPropertyDescriptor(e, r).enumerable;
              })),
              t.push.apply(t, o);
          }
          return t;
        }
        function imagevue_type_script_lang_js_objectSpread(e) {
          for (var r = 1; r < arguments.length; r++) {
            var t = null != arguments[r] ? arguments[r] : {};
            r % 2
              ? imagevue_type_script_lang_js_ownKeys(Object(t), !0).forEach(
                  function (r) {
                    _defineProperty(e, r, t[r]);
                  }
                )
              : Object.getOwnPropertyDescriptors
              ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))
              : imagevue_type_script_lang_js_ownKeys(Object(t)).forEach(
                  function (r) {
                    Object.defineProperty(
                      e,
                      r,
                      Object.getOwnPropertyDescriptor(t, r)
                    );
                  }
                );
          }
          return e;
        }
        /* harmony default export */ var imagevue_type_script_lang_js = {
          name: "lemonMessageImage",
          inheritAttrs: false,
          render: function render() {
            var h = arguments[0];
            return h(
              "lemon-message-basic",
              helper_default()([
                {
                  class: "lemon-message-image",
                },
                {
                  props: imagevue_type_script_lang_js_objectSpread(
                    {},
                    this.$attrs
                  ),
                },
                {
                  scopedSlots: {
                    content: function content(props) {
                      return h("img", {
                        attrs: {
                          src: props.content,
                        },
                      });
                    },
                  },
                },
              ])
            );
          },
        };
        // CONCATENATED MODULE: ./packages/components/message/image.vue?vue&type=script&lang=js
        /* harmony default export */ var message_imagevue_type_script_lang_js =
          imagevue_type_script_lang_js;
        // EXTERNAL MODULE: ./packages/components/message/image.vue?vue&type=style&index=0&id=f4dd6b2a&prod&lang=stylus
        var imagevue_type_style_index_0_id_f4dd6b2a_prod_lang_stylus =
          __webpack_require__("e61c");

        // CONCATENATED MODULE: ./packages/components/message/image.vue
        var image_render, image_staticRenderFns;

        /* normalize component */

        var image_component = normalizeComponent(
          message_imagevue_type_script_lang_js,
          image_render,
          image_staticRenderFns,
          false,
          null,
          null,
          null
        );

        /* harmony default export */ var message_image =
          image_component.exports;
        // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/message/file.vue?vue&type=script&lang=js

        function filevue_type_script_lang_js_ownKeys(e, r) {
          var t = Object.keys(e);
          if (Object.getOwnPropertySymbols) {
            var o = Object.getOwnPropertySymbols(e);
            r &&
              (o = o.filter(function (r) {
                return Object.getOwnPropertyDescriptor(e, r).enumerable;
              })),
              t.push.apply(t, o);
          }
          return t;
        }
        function filevue_type_script_lang_js_objectSpread(e) {
          for (var r = 1; r < arguments.length; r++) {
            var t = null != arguments[r] ? arguments[r] : {};
            r % 2
              ? filevue_type_script_lang_js_ownKeys(Object(t), !0).forEach(
                  function (r) {
                    _defineProperty(e, r, t[r]);
                  }
                )
              : Object.getOwnPropertyDescriptors
              ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))
              : filevue_type_script_lang_js_ownKeys(Object(t)).forEach(
                  function (r) {
                    Object.defineProperty(
                      e,
                      r,
                      Object.getOwnPropertyDescriptor(t, r)
                    );
                  }
                );
          }
          return e;
        }

        /* harmony default export */ var filevue_type_script_lang_js = {
          name: "lemonMessageFile",
          inheritAttrs: false,
          render: function render() {
            var h = arguments[0];
            return h(
              "lemon-message-basic",
              helper_default()([
                {
                  class: "lemon-message-file",
                },
                {
                  props: filevue_type_script_lang_js_objectSpread(
                    {},
                    this.$attrs
                  ),
                },
                {
                  scopedSlots: {
                    content: function content(props) {
                      return [
                        h(
                          "div",
                          {
                            class: "lemon-message-file__inner",
                          },
                          [
                            h(
                              "p",
                              {
                                class: "lemon-message-file__name",
                              },
                              [props.fileName]
                            ),
                            h(
                              "p",
                              {
                                class: "lemon-message-file__byte",
                              },
                              [formatByte(props.fileSize)]
                            ),
                          ]
                        ),
                        h(
                          "div",
                          {
                            class: "lemon-message-file__sfx",
                          },
                          [
                            h("i", {
                              class: "lemon-icon-attah",
                            }),
                          ]
                        ),
                      ];
                    },
                  },
                },
              ])
            );
          },
        };
        // CONCATENATED MODULE: ./packages/components/message/file.vue?vue&type=script&lang=js
        /* harmony default export */ var message_filevue_type_script_lang_js =
          filevue_type_script_lang_js;
        // EXTERNAL MODULE: ./packages/components/message/file.vue?vue&type=style&index=0&id=29a0badd&prod&lang=stylus
        var filevue_type_style_index_0_id_29a0badd_prod_lang_stylus =
          __webpack_require__("85ff");

        // CONCATENATED MODULE: ./packages/components/message/file.vue
        var file_render, file_staticRenderFns;

        /* normalize component */

        var file_component = normalizeComponent(
          message_filevue_type_script_lang_js,
          file_render,
          file_staticRenderFns,
          false,
          null,
          null,
          null
        );

        /* harmony default export */ var file = file_component.exports;
        // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/message/event.vue?vue&type=script&lang=js
        /* harmony default export */ var eventvue_type_script_lang_js = {
          name: "lemonMessageEvent",
          inheritAttrs: false,
          inject: ["IMUI"],
          render: function render() {
            var _this = this;
            var h = arguments[0];
            var content = this.$attrs.message.content;
            return h(
              "div",
              {
                class: "lemon-message lemon-message-event",
              },
              [
                h(
                  "span",
                  {
                    class: "lemon-message-event__content",
                    on: {
                      click: function click(e) {
                        return _this._emitClick(e, "content");
                      },
                    },
                  },
                  [content]
                ),
              ]
            );
          },
          methods: {
            _emitClick: function _emitClick(e, key) {
              this.IMUI.$emit(
                "message-click",
                e,
                key,
                this.$attrs.message,
                this.IMUI
              );
            },
          },
        };
        // CONCATENATED MODULE: ./packages/components/message/event.vue?vue&type=script&lang=js
        /* harmony default export */ var message_eventvue_type_script_lang_js =
          eventvue_type_script_lang_js;
        // EXTERNAL MODULE: ./packages/components/message/event.vue?vue&type=style&index=0&id=484db2b4&prod&lang=stylus
        var eventvue_type_style_index_0_id_484db2b4_prod_lang_stylus =
          __webpack_require__("dcc3");

        // CONCATENATED MODULE: ./packages/components/message/event.vue
        var event_render, event_staticRenderFns;

        /* normalize component */

        var event_component = normalizeComponent(
          message_eventvue_type_script_lang_js,
          event_render,
          event_staticRenderFns,
          false,
          null,
          null,
          null
        );

        /* harmony default export */ var message_event =
          event_component.exports;
        // EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.find-index.js
        var es6_array_find_index = __webpack_require__("20d6");

        // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js
        function _arrayLikeToArray(arr, len) {
          if (len == null || len > arr.length) len = arr.length;
          for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
          return arr2;
        }
        // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js

        function _arrayWithoutHoles(arr) {
          if (Array.isArray(arr)) return _arrayLikeToArray(arr);
        }
        // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArray.js
        function _iterableToArray(iter) {
          if (
            (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null) ||
            iter["@@iterator"] != null
          )
            return Array.from(iter);
        }
        // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js

        function _unsupportedIterableToArray(o, minLen) {
          if (!o) return;
          if (typeof o === "string") return _arrayLikeToArray(o, minLen);
          var n = Object.prototype.toString.call(o).slice(8, -1);
          if (n === "Object" && o.constructor) n = o.constructor.name;
          if (n === "Map" || n === "Set") return Array.from(o);
          if (
            n === "Arguments" ||
            /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)
          )
            return _arrayLikeToArray(o, minLen);
        }
        // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js
        function _nonIterableSpread() {
          throw new TypeError(
            "Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."
          );
        }
        // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js

        function _toConsumableArray(arr) {
          return (
            _arrayWithoutHoles(arr) ||
            _iterableToArray(arr) ||
            _unsupportedIterableToArray(arr) ||
            _nonIterableSpread()
          );
        }
        // EXTERNAL MODULE: ./node_modules/core-js/modules/es6.string.starts-with.js
        var es6_string_starts_with = __webpack_require__("f559");

        // EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.assign.js
        var es6_object_assign = __webpack_require__("f751");

        // EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.find.js
        var es6_array_find = __webpack_require__("7514");

        // EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.sort.js
        var es6_array_sort = __webpack_require__("55dd");

        // CONCATENATED MODULE: ./packages/utils/constant.js
        var EMIT_AVATAR_CLICK = "avatar-click";
        var DEFAULT_MENU_LASTMESSAGES = "messages";
        var DEFAULT_MENU_CONTACTS = "contacts";
        var DEFAULT_MENUS = [DEFAULT_MENU_LASTMESSAGES, DEFAULT_MENU_CONTACTS];
        /**
         * 聊天消息类型
         */
        var MESSAGE_TYPE = ["voice", "file", "video", "image", "text"];

        /**
         * 聊天消息状态
         */
        var MESSAGE_STATUS = ["going", "succeed", "failed"];
        var CONTACT_TYPE = ["many", "single"];
        // CONCATENATED MODULE: ./packages/lastContentRender.js

        /* harmony default export */ var packages_lastContentRender = {
          file: function file(message) {
            return "[文件]";
          },
          image: function image(message) {
            return "[图片]";
          },
          text: function text(message) {
            return this.emojiNameToImage(clearHtml(message.content));
          },
          event: function event(message) {
            return "[通知]";
          },
        };
        // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/classCallCheck.js
        function _classCallCheck(instance, Constructor) {
          if (!(instance instanceof Constructor)) {
            throw new TypeError("Cannot call a class as a function");
          }
        }
        // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/createClass.js

        function _defineProperties(target, props) {
          for (var i = 0; i < props.length; i++) {
            var descriptor = props[i];
            descriptor.enumerable = descriptor.enumerable || false;
            descriptor.configurable = true;
            if ("value" in descriptor) descriptor.writable = true;
            Object.defineProperty(
              target,
              toPropertyKey(descriptor.key),
              descriptor
            );
          }
        }
        function _createClass(Constructor, protoProps, staticProps) {
          if (protoProps) _defineProperties(Constructor.prototype, protoProps);
          if (staticProps) _defineProperties(Constructor, staticProps);
          Object.defineProperty(Constructor, "prototype", {
            writable: false,
          });
          return Constructor;
        }
        // CONCATENATED MODULE: ./packages/utils/cache/memory.js

        var memory_MemoryCache = /*#__PURE__*/ (function () {
          function MemoryCache() {
            _classCallCheck(this, MemoryCache);
            this.table = {};
          }
          _createClass(MemoryCache, [
            {
              key: "get",
              value: function get(key) {
                return key ? this.table[key] : this.table;
              },
            },
            {
              key: "set",
              value: function set(key, val) {
                this.table[key] = val;
              },
              // setOnly(key, val) {
              //   if (!this.has(key)) this.set(key, val);
              // }
            },
            {
              key: "remove",
              value: function remove(key) {
                if (key) {
                  delete this.table[key];
                } else {
                  this.table = {};
                }
              },
            },
            {
              key: "has",
              value: function has(key) {
                return !!this.table[key];
              },
            },
          ]);
          return MemoryCache;
        })();

        // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./packages/components/index.vue?vue&type=script&lang=js

        function componentsvue_type_script_lang_js_ownKeys(e, r) {
          var t = Object.keys(e);
          if (Object.getOwnPropertySymbols) {
            var o = Object.getOwnPropertySymbols(e);
            r &&
              (o = o.filter(function (r) {
                return Object.getOwnPropertyDescriptor(e, r).enumerable;
              })),
              t.push.apply(t, o);
          }
          return t;
        }
        function componentsvue_type_script_lang_js_objectSpread(e) {
          for (var r = 1; r < arguments.length; r++) {
            var t = null != arguments[r] ? arguments[r] : {};
            r % 2
              ? componentsvue_type_script_lang_js_ownKeys(
                  Object(t),
                  !0
                ).forEach(function (r) {
                  _defineProperty(e, r, t[r]);
                })
              : Object.getOwnPropertyDescriptors
              ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t))
              : componentsvue_type_script_lang_js_ownKeys(Object(t)).forEach(
                  function (r) {
                    Object.defineProperty(
                      e,
                      r,
                      Object.getOwnPropertyDescriptor(t, r)
                    );
                  }
                );
          }
          return e;
        }

        var allMessages = {};
        var emojiMap = {};
        var componentsvue_type_script_lang_js_toPx = function toPx(val) {
          return isString(val) ? val : "".concat(val, "px");
        };
        var toPoint = function toPoint(str) {
          return str.replace("%", "") / 100;
        };
        var renderDrawerContent = function renderDrawerContent() {};
        /* harmony default export */ var componentsvue_type_script_lang_js = {
          name: "LemonImui",
          provide: function provide() {
            return {
              IMUI: this,
            };
          },
          props: {
            width: {
              type: [String, Number],
              default: 850,
            },
            height: {
              type: [String, Number],
              default: 580,
            },
            theme: {
              type: String,
              default: "default",
            },
            simple: {
              type: Boolean,
              default: false,
            },
            loadingText: [String, Function],
            loadendText: [String, Function],
            /**
             * 消息时间格式化规则
             */
            messageTimeFormat: Function,
            /**
             * 联系人最新消息时间格式化规则
             */
            contactTimeFormat: Function,
            /**
             * 初始化时是否隐藏抽屉
             */
            hideDrawer: {
              type: Boolean,
              default: true,
            },
            /**
             * 是否隐藏导航按钮上的头像
             */
            hideMenuAvatar: Boolean,
            hideMenu: Boolean,
            /**
             * 是否隐藏消息列表内的联系人名字
             */
            hideMessageName: Boolean,
            /**
             * 是否隐藏消息列表内的发送时间
             */
            hideMessageTime: Boolean,
            sendKey: Function,
            wrapKey: Function,
            sendText: String,
            contextmenu: Array,
            contactContextmenu: Array,
            avatarCricle: Boolean,
            user: {
              type: Object,
              default: function _default() {
                return {};
              },
            },
            latelyContacts: {
              type: Function,
              default: function _default(list) {
                var data = list.filter(function (item) {
                  return !isEmpty(item.lastContent);
                });
                data.sort(function (a1, a2) {
                  return a2.lastSendTime - a1.lastSendTime;
                });
                return data;
              },
            },
          },
          data: function data() {
            this.CacheContactContainer = new memory_MemoryCache();
            this.CacheMenuContainer = new memory_MemoryCache();
            this.CacheMessageLoaded = new memory_MemoryCache();
            this.CacheDraft = new memory_MemoryCache();
            return {
              drawerVisible: !this.hideDrawer,
              currentContactId: null,
              // 消息菜单下当前联系人
              currentContactIdSidebarContact: null,
              // 联系人菜单下当前联系人
              currentMessages: [],
              activeSidebar: DEFAULT_MENU_LASTMESSAGES,
              contacts: [],
              menus: [],
              editorTools: [
                {
                  name: "emoji",
                },
                {
                  name: "uploadFile",
                },
                {
                  name: "uploadImage",
                },
              ],
            };
          },
          render: function render() {
            return this._renderWrapper([
              this._renderMenu(),
              this._renderSidebarMessage(),
              this._renderSidebarContact(),
              this._renderContainer(),
              this._renderDrawer(),
            ]);
          },
          created: function created() {
            this.initMenus();
          },
          mounted: (function () {
            var _mounted = _asyncToGenerator(
              /*#__PURE__*/ regeneratorRuntime.mark(function _callee() {
                return regeneratorRuntime.wrap(
                  function _callee$(_context) {
                    while (1)
                      switch ((_context.prev = _context.next)) {
                        case 0:
                          _context.next = 2;
                          return this.$nextTick();
                        case 2:
                        case "end":
                          return _context.stop();
                      }
                  },
                  _callee,
                  this
                );
              })
            );
            function mounted() {
              return _mounted.apply(this, arguments);
            }
            return mounted;
          })(),
          computed: {
            currentContact: function currentContact() {
              var _this = this;
              return (
                this.contacts.find(function (item) {
                  return item.id == _this.currentContactId;
                }) || {}
              );
            },
            currentContactSidebarContact:
              function currentContactSidebarContact() {
                var _this2 = this;
                return (
                  this.contacts.find(function (item) {
                    return item.id == _this2.currentContactIdSidebarContact;
                  }) || {}
                );
              },
            currentMenu: function currentMenu() {
              var _this3 = this;
              return (
                this.menus.find(function (item) {
                  return item.name == _this3.activeSidebar;
                }) || {}
              );
            },
            currentIsDefSidebar: function currentIsDefSidebar() {
              return DEFAULT_MENUS.includes(this.activeSidebar);
            },
            lastMessages: function lastMessages() {
              return this.latelyContacts(this.contacts);
            },
          },
          watch: {
            activeSidebar: function activeSidebar() {},
          },
          methods: {
            _menuIsContacts: function _menuIsContacts() {
              return this.activeSidebar == DEFAULT_MENU_CONTACTS;
            },
            _menuIsMessages: function _menuIsMessages() {
              return this.activeSidebar == DEFAULT_MENU_LASTMESSAGES;
            },
            _createMessage: function _createMessage(message) {
              return componentsvue_type_script_lang_js_objectSpread(
                componentsvue_type_script_lang_js_objectSpread(
                  {},
                  {
                    id: generateUUID(),
                    type: "text",
                    status: "going",
                    sendTime: new Date().getTime(),
                    toContactId: this.currentContactId,
                    fromUser: componentsvue_type_script_lang_js_objectSpread(
                      {},
                      this.user
                    ),
                  }
                ),
                message
              );
            },
            /**
             * 新增一条消息
             */
            appendMessage: function appendMessage(message) {
              var scrollToBottom =
                arguments.length > 1 && arguments[1] !== undefined
                  ? arguments[1]
                  : false;
              var unread = "+1";
              var messageList = allMessages[message.toContactId];
              // 如果是自己的消息需要push，发送的消息不再增加未读条数
              if (
                message.type == "event" ||
                this.user.id == message.fromUser.id
              )
                unread = "+0";
              if (messageList === undefined) {
                this.updateContact({
                  id: message.toContactId,
                  unread: unread,
                  lastSendTime: message.sendTime,
                  lastContent: this.lastContentRender(message),
                });
              } else {
                // 如果消息存在则不再添加
                var hasMsg = messageList.some(function (_ref) {
                  var id = _ref.id;
                  return id == message.id;
                });
                if (hasMsg) return;
                this._addMessage(message, message.toContactId, 1);
                var updateContact = {
                  id: message.toContactId,
                  lastContent: this.lastContentRender(message),
                  lastSendTime: message.sendTime,
                };
                if (message.toContactId == this.currentContactId) {
                  if (scrollToBottom == true) {
                    this.messageViewToBottom();
                  }
                  this.CacheDraft.remove(message.toContactId);
                } else {
                  updateContact.unread = unread;
                }
                this.updateContact(updateContact);
              }
            },
            _emitSend: function _emitSend(message, next, file) {
              var _this4 = this;
              this.$emit(
                "send",
                message,
                function () {
                  var replaceMessage =
                    arguments.length > 0 && arguments[0] !== undefined
                      ? arguments[0]
                      : {
                          status: "succeed",
                        };
                  next();
                  _this4.updateMessage(Object.assign(message, replaceMessage));
                },
                file
              );
            },
            _handleSend: function _handleSend(text) {
              var _this5 = this;
              var atUserList = this.$refs.editor.chatArea.getCallUserList();
              // 将数组中的id提取出来
              var atUserIds = atUserList.map(function (item) {
                return item.id;
              });
              var message = this._createMessage({
                content: text,
                at: atUserIds,
              });
              this.appendMessage(message, true);
              this._emitSend(message, function () {
                _this5.updateContact({
                  id: message.toContactId,
                  lastContent: _this5.lastContentRender(message),
                  lastSendTime: message.sendTime,
                });
                _this5.CacheDraft.remove(message.toContactId);
              });
            },
            _handleUpload: function _handleUpload(file) {
              var _this6 = this;
              var imageTypes = ["image/gif", "image/jpeg", "image/png"];
              var joinMessage;
              if (imageTypes.includes(file.type)) {
                joinMessage = {
                  type: "image",
                  content: URL.createObjectURL(file),
                };
              } else {
                joinMessage = {
                  type: "file",
                  fileSize: file.size,
                  fileName: file.name,
                  content: "",
                };
              }
              var message = this._createMessage(joinMessage);
              this.appendMessage(message, true);
              this._emitSend(
                message,
                function () {
                  _this6.updateContact({
                    id: message.toContactId,
                    lastContent: _this6.lastContentRender(message),
                    lastSendTime: message.sendTime,
                  });
                },
                file
              );
            },
            _emitPullMessages: function _emitPullMessages(next) {
              var _this7 = this;
              this._changeContactLock = true;
              this.$emit(
                "pull-messages",
                this.currentContact,
                function () {
                  var messages =
                    arguments.length > 0 && arguments[0] !== undefined
                      ? arguments[0]
                      : [];
                  var isEnd =
                    arguments.length > 1 && arguments[1] !== undefined
                      ? arguments[1]
                      : false;
                  _this7._addMessage(messages, _this7.currentContactId, 0);
                  _this7.CacheMessageLoaded.set(_this7.currentContactId, isEnd);
                  if (isEnd == true) _this7.$refs.messages.loaded();
                  _this7.updateCurrentMessages();
                  _this7._changeContactLock = false;
                  next(isEnd);
                },
                this
              );
            },
            callIsBottom: function callIsBottom(isBottom) {
              this.$emit("is-bottom", isBottom);
            },
            clearCacheContainer: function clearCacheContainer(name) {
              this.CacheContactContainer.remove(name);
              this.CacheMenuContainer.remove(name);
            },
            _renderWrapper: function _renderWrapper(children) {
              var h = this.$createElement;
              return h(
                "div",
                {
                  style: {
                    width: componentsvue_type_script_lang_js_toPx(this.width),
                    height: componentsvue_type_script_lang_js_toPx(this.height),
                  },
                  ref: "wrapper",
                  class: [
                    "lemon-wrapper",
                    "lemon-wrapper--theme-".concat(this.theme),
                    {
                      "lemon-wrapper--simple": this.simple,
                    },
                    this.drawerVisible && "lemon-wrapper--drawer-show",
                  ],
                },
                [children]
              );
            },
            _renderMenu: function _renderMenu() {
              var _this8 = this;
              var h = this.$createElement;
              var menuItem = this._renderMenuItem();
              return h(
                "div",
                {
                  class: "lemon-menu",
                  directives: [
                    {
                      name: "show",
                      value: !this.hideMenu,
                    },
                  ],
                },
                [
                  h("lemon-avatar", {
                    directives: [
                      {
                        name: "show",
                        value: !this.hideMenuAvatar,
                      },
                    ],
                    on: {
                      click: function click(e) {
                        _this8.$emit("menu-avatar-click", e);
                      },
                    },
                    class: "lemon-menu__avatar",
                    attrs: {
                      src: this.user.avatar,
                    },
                  }),
                  menuItem.top,
                  this.$slots.menu,
                  h(
                    "div",
                    {
                      class: "lemon-menu__bottom",
                    },
                    [this.$slots["menu-bottom"], menuItem.bottom]
                  ),
                ]
              );
            },
            _renderMenuAvatar: function _renderMenuAvatar() {
              return;
            },
            _renderMenuItem: function _renderMenuItem() {
              var _this9 = this;
              var h = this.$createElement;
              var top = [];
              var bottom = [];
              this.menus.forEach(function (item) {
                var name = item.name,
                  title = item.title,
                  unread = item.unread,
                  render = item.render,
                  _click = item.click;
                var node = h(
                  "div",
                  {
                    class: [
                      "lemon-menu__item",
                      {
                        "lemon-menu__item--active":
                          _this9.activeSidebar == name,
                      },
                    ],
                    on: {
                      click: function click() {
                        funCall(_click, function () {
                          if (name) _this9.changeMenu(name);
                        });
                      },
                    },
                    attrs: {
                      title: title,
                    },
                  },
                  [
                    h(
                      "lemon-badge",
                      {
                        attrs: {
                          count: unread,
                        },
                      },
                      [render(item)]
                    ),
                  ]
                );
                item.isBottom === true ? bottom.push(node) : top.push(node);
              });
              return {
                top: top,
                bottom: bottom,
              };
            },
            _renderSidebarMessage: function _renderSidebarMessage() {
              var _this10 = this;
              return this._renderSidebar(
                [
                  useScopedSlot(
                    this.$scopedSlots["sidebar-message-top"],
                    null,
                    this
                  ),
                  this.lastMessages.map(function (contact) {
                    return _this10._renderContact(
                      {
                        contact: contact,
                        timeFormat: _this10.contactTimeFormat,
                      },
                      function () {
                        return _this10.changeContact(contact.id);
                      },
                      _this10.$scopedSlots["sidebar-message"]
                    );
                  }),
                ],
                DEFAULT_MENU_LASTMESSAGES,
                useScopedSlot(
                  this.$scopedSlots["sidebar-message-fixedtop"],
                  null,
                  this
                )
              );
            },
            _renderContact: function _renderContact(props, onClick, slot) {
              var _this11 = this;
              var h = this.$createElement;
              var _props$contact = props.contact,
                customClick = _props$contact.click,
                renderContainer = _props$contact.renderContainer,
                contactId = _props$contact.id;
              var click = function click() {
                funCall(customClick, function () {
                  onClick();
                  _this11._customContainerReady(
                    renderContainer,
                    _this11.CacheContactContainer,
                    contactId
                  );
                });
              };
              return h(
                "lemon-contact",
                helper_default()([
                  {
                    class: {
                      "lemon-contact--active":
                        this.activeSidebar == DEFAULT_MENU_CONTACTS
                          ? this.currentContactIdSidebarContact ==
                            props.contact.id
                          : this.currentContactId == props.contact.id,
                    },
                    directives: [
                      {
                        name: "lemon-contextmenu",
                        value: this.contactContextmenu,
                        modifiers: {
                          contact: true,
                        },
                      },
                    ],
                  },
                  {
                    props: props,
                  },
                  {
                    on: {
                      click: click,
                    },
                    scopedSlots: {
                      default: slot,
                    },
                  },
                ])
              );
            },
            _renderSidebarContact: function _renderSidebarContact() {
              var _this12 = this;
              var h = this.$createElement;
              var prevIndex;
              return this._renderSidebar(
                [
                  useScopedSlot(
                    this.$scopedSlots["sidebar-contact-top"],
                    null,
                    this
                  ),
                  this.contacts.map(function (contact) {
                    if (!contact.index) return;
                    contact.index = contact.index.replace(/\[[0-9]*\]/, "");
                    var node = [
                      contact.index !== prevIndex &&
                        h(
                          "p",
                          {
                            class: "lemon-sidebar__label",
                          },
                          [contact.index]
                        ),
                      _this12._renderContact(
                        {
                          contact: contact,
                          simple: true,
                        },
                        function () {
                          _this12.changeContact(contact.id);
                        },
                        _this12.$scopedSlots["sidebar-contact"]
                      ),
                    ];
                    prevIndex = contact.index;
                    return node;
                  }),
                ],
                DEFAULT_MENU_CONTACTS,
                useScopedSlot(
                  this.$scopedSlots["sidebar-contact-fixedtop"],
                  null,
                  this
                )
              );
            },
            _renderSidebar: function _renderSidebar(children, name, fixedtop) {
              var h = this.$createElement;
              return h(
                "div",
                {
                  class: "lemon-sidebar",
                  directives: [
                    {
                      name: "show",
                      value: this.activeSidebar == name,
                    },
                  ],
                  on: {
                    scroll: this._handleSidebarScroll,
                  },
                },
                [
                  h(
                    "div",
                    {
                      class: "lemon-sidebar__fixed-top",
                    },
                    [fixedtop]
                  ),
                  h(
                    "div",
                    {
                      class: "lemon-sidebar__scroll",
                    },
                    [children]
                  ),
                ]
              );
            },
            _renderDrawer: function _renderDrawer() {
              var h = this.$createElement;
              return this._menuIsMessages() && this.currentContactId
                ? h(
                    "div",
                    {
                      class: "lemon-drawer",
                      ref: "drawer",
                    },
                    [
                      renderDrawerContent(this.currentContact),
                      useScopedSlot(
                        this.$scopedSlots.drawer,
                        "",
                        this.currentContact
                      ),
                    ]
                  )
                : "";
            },
            _isContactContainerCache: function _isContactContainerCache(name) {
              return name.startsWith("contact#");
            },
            _renderContainer: function _renderContainer() {
              var _this13 = this;
              var h = this.$createElement;
              var nodes = [];
              var cls = "lemon-container";
              var curact =
                this.activeSidebar == DEFAULT_MENU_CONTACTS
                  ? this.currentContactSidebarContact
                  : this.currentContact;
              var defIsShow = true;
              for (var name in this.CacheContactContainer.get()) {
                var show = curact.id == name && this.currentIsDefSidebar;
                if (show) defIsShow = !show;
                nodes.push(
                  h(
                    "div",
                    {
                      class: cls,
                      directives: [
                        {
                          name: "show",
                          value: show,
                        },
                      ],
                    },
                    [this.CacheContactContainer.get(name)]
                  )
                );
              }
              for (var _name2 in this.CacheMenuContainer.get()) {
                nodes.push(
                  h(
                    "div",
                    {
                      class: cls,
                      directives: [
                        {
                          name: "show",
                          value:
                            this.activeSidebar == _name2 &&
                            !this.currentIsDefSidebar,
                        },
                      ],
                    },
                    [this.CacheMenuContainer.get(_name2)]
                  )
                );
              }
              nodes.push(
                h(
                  "div",
                  {
                    class: cls,
                    directives: [
                      {
                        name: "show",
                        value: this._menuIsMessages() && defIsShow && curact.id,
                      },
                    ],
                  },
                  [
                    h(
                      "div",
                      {
                        class: "lemon-container__title",
                      },
                      [
                        useScopedSlot(
                          this.$scopedSlots["message-title"],
                          h(
                            "div",
                            {
                              class: "lemon-container__displayname",
                            },
                            [curact.displayName]
                          ),
                          curact
                        ),
                      ]
                    ),
                    h(
                      "div",
                      {
                        class: "lemon-vessel",
                      },
                      [
                        h(
                          "div",
                          {
                            class: "lemon-vessel__left",
                          },
                          [
                            h("lemon-messages", {
                              ref: "messages",
                              attrs: {
                                "loading-text": this.loadingText,
                                "loadend-text": this.loadendText,
                                "hide-time": this.hideMessageTime,
                                "hide-name": this.hideMessageName,
                                "time-format": this.messageTimeFormat,
                                "reverse-user-id": this.user.id,
                                messages: this.currentMessages,
                              },
                              on: {
                                "reach-top": this._emitPullMessages,
                                "is-bottom": this.callIsBottom,
                              },
                            }),
                            h("lemon-editor", {
                              ref: "editor",
                              attrs: {
                                tools: this.editorTools,
                                sendText: this.sendText,
                                sendKey: this.sendKey,
                                wrapKey: this.wrapKey,
                              },
                              on: {
                                send: this._handleSend,
                                upload: this._handleUpload,
                              },
                            }),
                          ]
                        ),
                        h(
                          "div",
                          {
                            class: "lemon-vessel__right",
                          },
                          [
                            useScopedSlot(
                              this.$scopedSlots["message-side"],
                              null,
                              curact
                            ),
                          ]
                        ),
                      ]
                    ),
                  ]
                )
              );
              nodes.push(
                h(
                  "div",
                  {
                    class: cls,
                    directives: [
                      {
                        name: "show",
                        value: !curact.id && this.currentIsDefSidebar,
                      },
                    ],
                  },
                  [this.$slots.cover]
                )
              );
              nodes.push(
                h(
                  "div",
                  {
                    class: cls,
                    directives: [
                      {
                        name: "show",
                        value: this._menuIsContacts() && defIsShow && curact.id,
                      },
                    ],
                  },
                  [
                    useScopedSlot(
                      this.$scopedSlots["contact-info"],
                      h(
                        "div",
                        {
                          class: "lemon-contact-info",
                        },
                        [
                          h("lemon-avatar", {
                            attrs: {
                              src: curact.avatar,
                              size: 90,
                            },
                          }),
                          h("h4", [curact.displayName]),
                          h(
                            "lemon-button",
                            {
                              on: {
                                click: function click() {
                                  if (isEmpty(curact.lastContent)) {
                                    _this13.updateContact({
                                      id: curact.id,
                                      lastContent: " ",
                                    });
                                  }
                                  _this13.changeContact(
                                    curact.id,
                                    DEFAULT_MENU_LASTMESSAGES
                                  );
                                },
                              },
                            },
                            ["\u53D1\u9001\u6D88\u606F"]
                          ),
                        ]
                      ),
                      curact
                    ),
                  ]
                )
              );
              return nodes;
            },
            _handleSidebarScroll: function _handleSidebarScroll() {
              contextmenu.hide();
            },
            _addContact: function _addContact(data, t) {
              var type = {
                0: "unshift",
                1: "push",
              }[t];
              this.contacts[type](data);
            },
            _addMessage: function _addMessage(data, contactId, t) {
              var _allMessages$contactI;
              var type = {
                0: "unshift",
                1: "push",
              }[t];
              if (!Array.isArray(data)) data = [data];
              allMessages[contactId] = allMessages[contactId] || [];
              (_allMessages$contactI = allMessages[contactId])[type].apply(
                _allMessages$contactI,
                _toConsumableArray(data)
              );
            },
            /**
             * 设置最新消息DOM
             * @param {String} messageType 消息类型
             * @param {Function} render 返回消息 vnode
             */
            setLastContentRender: function setLastContentRender(
              messageType,
              render
            ) {
              packages_lastContentRender[messageType] = render;
            },
            lastContentRender: function lastContentRender(message) {
              if (!isFunction(packages_lastContentRender[message.type])) {
                return "[不支持的消息类型]";
              }
              return packages_lastContentRender[message.type].call(
                this,
                message
              );
            },
            /**
             * 将字符串内的 EmojiItem.name 替换为 img
             * @param {String} str 被替换的字符串
             * @return {String} 替换后的字符串
             */
            emojiNameToImage: function emojiNameToImage(str) {
              return str.replace(/\[!(\w+)\]/gi, function (str, match) {
                var file = match;
                return emojiMap[file]
                  ? '<img emoji-name="'
                      .concat(match, '" src="')
                      .concat(emojiMap[file], '" />')
                  : "[!".concat(match, "]");
              });
            },
            emojiImageToName: function emojiImageToName(str) {
              return str.replace(
                /<img emoji-name=\"([^\"]*?)\" [^>]*>/gi,
                "[!$1]"
              );
            },
            updateCurrentMessages: function updateCurrentMessages() {
              if (!allMessages[this.currentContactId])
                allMessages[this.currentContactId] = [];
              this.currentMessages = allMessages[this.currentContactId];
            },
            /**
             * 将当前聊天窗口滚动到底部
             */
            messageViewToBottom: function messageViewToBottom() {
              this.$refs.messages.scrollToBottom();
            },
            /**
             * 设置联系人的草稿信息
             */
            setDraft: function setDraft(cid, editorValue) {
              if (isEmpty(cid) || isEmpty(editorValue)) return false;
              var contact = this.findContact(cid);
              var lastContent = contact.lastContent;
              if (isEmpty(contact)) return false;
              if (this.CacheDraft.has(cid)) {
                lastContent = this.CacheDraft.get(cid).lastContent;
              }
              this.CacheDraft.set(cid, {
                editorValue: editorValue,
                lastContent: lastContent,
              });
              this.updateContact({
                id: cid,
                lastContent:
                  '<span style="color:red;">[\u8349\u7A3F]</span><span>'.concat(
                    this.lastContentRender({
                      type: "text",
                      content: editorValue,
                    }),
                    "</span>"
                  ),
              });
            },
            /**
             * 清空联系人草稿信息
             */
            clearDraft: function clearDraft(contactId) {
              var draft = this.CacheDraft.get(contactId);
              if (draft) {
                var currentContent = this.findContact(contactId).lastContent;
                if (
                  currentContent.indexOf(
                    '<span style="color:red;">[草稿]</span>'
                  ) === 0
                ) {
                  this.updateContact({
                    id: contactId,
                    lastContent: draft.lastContent,
                  });
                }
                this.CacheDraft.remove(contactId);
              }
            },
            /**
             * 改变聊天对象
             * @param contactId 联系人 id
             */
            changeContact: (function () {
              var _changeContact = _asyncToGenerator(
                /*#__PURE__*/ regeneratorRuntime.mark(function _callee2(
                  contactId,
                  menuName
                ) {
                  var _this14 = this;
                  var editorValue, text, draft;
                  return regeneratorRuntime.wrap(
                    function _callee2$(_context2) {
                      while (1)
                        switch ((_context2.prev = _context2.next)) {
                          case 0:
                            if (!menuName) {
                              _context2.next = 4;
                              break;
                            }
                            this.changeMenu(menuName);
                            _context2.next = 6;
                            break;
                          case 4:
                            if (
                              !(
                                this._changeContactLock ||
                                (this.activeSidebar ==
                                  DEFAULT_MENU_LASTMESSAGES &&
                                  this.currentContactId == contactId) ||
                                (this.activeSidebar == DEFAULT_MENU_CONTACTS &&
                                  this.currentContactIdSidebarContact ==
                                    contactId)
                              )
                            ) {
                              _context2.next = 6;
                              break;
                            }
                            return _context2.abrupt("return", false);
                          case 6:
                            //保存上个聊天目标的草稿
                            if (this.currentContactId) {
                              editorValue = this.$refs.editor.chatArea.getHtml({
                                needUserId: true,
                              });
                              text = this.$refs.editor.chatArea.getText();
                              if (text) {
                                this.setDraft(
                                  this.currentContactId,
                                  editorValue
                                );
                                this.setEditorValue();
                              } else {
                                this.clearDraft(this.currentContactId);
                              }
                            }
                            if (this.activeSidebar == DEFAULT_MENU_CONTACTS) {
                              this.currentContactIdSidebarContact = contactId;
                            } else {
                              this.currentContactId = contactId;
                            }
                            if (this.currentContactId) {
                              _context2.next = 10;
                              break;
                            }
                            return _context2.abrupt("return", false);
                          case 10:
                            this.$emit(
                              "change-contact",
                              this.currentContact,
                              this
                            );
                            if (
                              !(
                                isFunction(
                                  this.currentContact.renderContainer
                                ) || this.activeSidebar == DEFAULT_MENU_CONTACTS
                              )
                            ) {
                              _context2.next = 13;
                              break;
                            }
                            return _context2.abrupt("return");
                          case 13:
                            //填充草稿内容
                            draft = this.CacheDraft.get(contactId);
                            if (draft) {
                              this.$refs.editor.chatArea.reverseAnalysis(
                                draft.editorValue
                              );
                              this.$refs.editor._checkSubmitDisabled();
                            }
                            if (this.CacheMessageLoaded.has(contactId)) {
                              this.$refs.messages.loaded();
                            } else {
                              this.$refs.messages.resetLoadState();
                            }
                            if (!allMessages[contactId]) {
                              this.updateCurrentMessages();
                              this._emitPullMessages(function (isEnd) {
                                _this14.messageViewToBottom();
                              });
                            } else {
                              setTimeout(function () {
                                _this14.updateCurrentMessages();
                                _this14.messageViewToBottom();
                              }, 0);
                            }
                          case 17:
                          case "end":
                            return _context2.stop();
                        }
                    },
                    _callee2,
                    this
                  );
                })
              );
              function changeContact(_x, _x2) {
                return _changeContact.apply(this, arguments);
              }
              return changeContact;
            })(),
            /**
             * 删除一条聊天消息
             * @param messageId 消息 id
             * @param contactId 联系人 id
             */
            removeMessage: function removeMessage(messageId) {
              var message = this.findMessage(messageId);
              if (!message) return false;
              var index = allMessages[message.toContactId].findIndex(function (
                _ref2
              ) {
                var id = _ref2.id;
                return id == messageId;
              });
              allMessages[message.toContactId].splice(index, 1);
              return true;
            },
            /**
             * 修改聊天一条聊天消息
             * @param {Message} data 根据 data.id 查找聊天消息并覆盖传入的值
             * @param contactId 联系人 id
             */
            updateMessage: function updateMessage(message) {
              if (!message.id) return false;
              var historyMessage = this.findMessage(message.id);
              if (!historyMessage) return false;
              historyMessage = Object.assign(historyMessage, message, {
                toContactId: historyMessage.toContactId,
              });
              return true;
            },
            /**
             * 手动更新对话消息
             * @param {String} messageId 消息ID，如果为空则更新当前聊天窗口的所有消息
             */
            forceUpdateMessage: function forceUpdateMessage(messageId) {
              if (!messageId) {
                this.$refs.messages.$forceUpdate();
              } else {
                var components = this.$refs.messages.$refs.message;
                if (components) {
                  var messageComponent = components.find(function (com) {
                    return com.$attrs.message.id == messageId;
                  });
                  if (messageComponent) messageComponent.$forceUpdate();
                }
              }
            },
            _customContainerReady: function _customContainerReady(
              render,
              cacheDrive,
              key
            ) {
              if (isFunction(render) && !cacheDrive.has(key)) {
                cacheDrive.set(key, render.call(this));
              }
            },
            /**
             * 切换左侧按钮
             * @param {String} name 按钮 name
             */
            changeMenu: function changeMenu(name) {
              this.$emit("change-menu", name);
              this.activeSidebar = name;
            },
            /**
             * 初始化编辑框的 Emoji 表情列表，是 Lemon-editor.initEmoji 的代理方法
             * @param {Array<Emoji,EmojiItem>} data emoji 数据
             * Emoji = {label: 表情,children: [{name: wx,title: 微笑,src: url}]} 分组
             * EmojiItem = {name: wx,title: 微笑,src: url} 无分组
             */
            initEmoji: function initEmoji(data) {
              var flatData = [];
              this.$refs.editor.initEmoji(data);
              if (data[0].label) {
                data.forEach(function (item) {
                  var _flatData;
                  (_flatData = flatData).push.apply(
                    _flatData,
                    _toConsumableArray(item.children)
                  );
                });
              } else {
                flatData = data;
              }
              flatData.forEach(function (_ref3) {
                var name = _ref3.name,
                  src = _ref3.src;
                return (emojiMap[name] = src);
              });
            },
            initEditorTools: function initEditorTools(data) {
              //this.editorTools = data;
              this.editorTools = data;
              //this.$refs.editor.initTools(data);
            },
            /**
             * 初始化左侧按钮
             * @param {Array<Menu>} data 按钮数据
             */
            initMenus: function initMenus(data) {
              var _this15 = this;
              var h = this.$createElement;
              var defaultMenus = [
                {
                  name: DEFAULT_MENU_LASTMESSAGES,
                  title: "聊天",
                  unread: 0,
                  click: null,
                  render: function render(menu) {
                    return h("i", {
                      class: "lemon-icon-message",
                    });
                  },
                  isBottom: false,
                },
                {
                  name: DEFAULT_MENU_CONTACTS,
                  title: "通讯录",
                  unread: 0,
                  click: null,
                  render: function render(menu) {
                    return h("i", {
                      class: "lemon-icon-addressbook",
                    });
                  },
                  isBottom: false,
                },
              ];
              var menus = [];
              if (Array.isArray(data)) {
                var indexMap = {
                  messages: 0,
                  contacts: 1,
                };
                var indexKeys = Object.keys(indexMap);
                menus = data.map(function (item) {
                  if (indexKeys.includes(item.name)) {
                    return componentsvue_type_script_lang_js_objectSpread(
                      componentsvue_type_script_lang_js_objectSpread(
                        componentsvue_type_script_lang_js_objectSpread(
                          {},
                          defaultMenus[indexMap[item.name]]
                        ),
                        item
                      ),
                      {
                        renderContainer: null,
                      }
                    );
                  }
                  if (item.renderContainer) {
                    _this15._customContainerReady(
                      item.renderContainer,
                      _this15.CacheMenuContainer,
                      item.name
                    );
                  }
                  return item;
                });
              } else {
                menus = defaultMenus;
              }
              this.menus = menus;
            },
            /**
             * 初始化联系人数据
             * @param {Array<Contact>} data 联系人列表
             */
            initContacts: function initContacts(data) {
              this.contacts = data;
              this.sortContacts();
            },
            /**
             * 使用 联系人的 index 值进行排序
             */
            sortContacts: function sortContacts() {
              this.contacts.sort(function (a, b) {
                if (!a.index) return;
                return a.index.localeCompare(b.index);
              });
            },
            appendContact: function appendContact(contact) {
              if (isEmpty(contact.id) || isEmpty(contact.displayName)) {
                console.error("id | displayName cant be empty");
                return false;
              }
              if (this.hasContact(contact.id)) return true;
              this.contacts.push(
                Object.assign(
                  {
                    id: "",
                    displayName: "",
                    avatar: "",
                    index: "",
                    unread: 0,
                    lastSendTime: "",
                    lastContent: "",
                  },
                  contact
                )
              );
              return true;
            },
            removeContact: function removeContact(id) {
              var index = this.findContactIndexById(id);
              if (index === -1) return false;
              this.contacts.splice(index, 1);
              this.CacheDraft.remove(id);
              this.CacheMessageLoaded.remove(id);
              return true;
            },
            /**
             * 修改联系人数据
             * @param {Contact} data 修改的数据，根据 Contact.id 查找联系人并覆盖传入的值
             */
            updateContact: function updateContact(data) {
              var contactId = data.id;
              delete data.id;
              var index = this.findContactIndexById(contactId);
              if (index !== -1) {
                var unread = data.unread;
                if (isString(unread)) {
                  if (unread.indexOf("+") === 0 || unread.indexOf("-") === 0) {
                    data.unread =
                      parseInt(unread) + parseInt(this.contacts[index].unread);
                  }
                }
                this.$set(
                  this.contacts,
                  index,
                  componentsvue_type_script_lang_js_objectSpread(
                    componentsvue_type_script_lang_js_objectSpread(
                      {},
                      this.contacts[index]
                    ),
                    data
                  )
                );
              }
            },
            /**
             * 根据 id 查找联系人的索引
             * @param contactId 联系人 id
             * @return {Number} 联系人索引，未找到返回 -1
             */
            findContactIndexById: function findContactIndexById(contactId) {
              return this.contacts.findIndex(function (item) {
                return item.id == contactId;
              });
            },
            /**
             * 根据 id 查找判断是否存在联系人
             * @param contactId 联系人 id
             * @return {Boolean}
             */
            hasContact: function hasContact(contactId) {
              return this.findContactIndexById(contactId) !== -1;
            },
            findMessage: function findMessage(messageId) {
              for (var key in allMessages) {
                var message = allMessages[key].find(function (_ref4) {
                  var id = _ref4.id;
                  return id == messageId;
                });
                if (message) return message;
              }
            },
            findContact: function findContact(contactId) {
              return this.getContacts().find(function (_ref5) {
                var id = _ref5.id;
                return id == contactId;
              });
            },
            /**
             * 返回所有联系人
             * @return {Array<Contact>}
             */
            getContacts: function getContacts() {
              return this.contacts;
            },
            //返回当前聊天窗口联系人信息
            getCurrentContact: function getCurrentContact() {
              return this.currentContact;
            },
            getCurrentMessages: function getCurrentMessages() {
              return this.currentMessages;
            },
            setEditorValue: function setEditorValue() {
              var val =
                arguments.length > 0 && arguments[0] !== undefined
                  ? arguments[0]
                  : "";
              if (!isString(val)) return false;
              this.$refs.editor.setValue(this.emojiNameToImage(val));
            },
            getEditorValue: function getEditorValue() {
              return this.$refs.editor.getFormatValue();
            },
            /**
             * 清空某个联系人的消息，切换到该联系人时会重新触发pull-messages事件
             */
            clearMessages: function clearMessages(contactId) {
              if (contactId) {
                delete allMessages[contactId];
                this.CacheMessageLoaded.remove(contactId);
                this.CacheDraft.remove(contactId);
              } else {
                allMessages = {};
                this.CacheMessageLoaded.remove();
                this.CacheDraft.remove();
              }
              return true;
            },
            /**
             * 返回所有消息
             * @return {Object<Contact.id,Message>}
             */
            getMessages: function getMessages(contactId) {
              return (contactId ? allMessages[contactId] : allMessages) || [];
            },
            changeDrawer: function changeDrawer(params) {
              this.drawerVisible = !this.drawerVisible;
              if (this.drawerVisible == true) this.openDrawer(params);
            },
            // openDrawer(data) {
            //   renderDrawerContent = data || new Function();
            //   this.drawerVisible = true;
            // },
            openDrawer: function openDrawer(params) {
              renderDrawerContent = isFunction(params)
                ? params
                : params.render || new Function();
              var wrapperWidth = this.$refs.wrapper.clientWidth;
              var wrapperHeight = this.$refs.wrapper.clientHeight;
              var width = params.width || 200;
              var height = params.height || wrapperHeight;
              var offsetX = params.offsetX || 0;
              var offsetY = params.offsetY || 0;
              var position = params.position || "right";
              if (isString(width)) width = wrapperWidth * toPoint(width);
              if (isString(height)) height = wrapperHeight * toPoint(height);
              if (isString(offsetX)) offsetX = wrapperWidth * toPoint(offsetX);
              if (isString(offsetY)) offsetY = wrapperHeight * toPoint(offsetY);
              this.$refs.drawer.style.width = "".concat(width, "px");
              this.$refs.drawer.style.height = "".concat(height, "px");
              var left = 0;
              var top = 0;
              var shadow = "";
              if (position == "right") {
                left = wrapperWidth;
              } else if (position == "rightInside") {
                left = wrapperWidth - width;
                shadow = "-15px 0 16px -14px rgba(0,0,0,0.08)";
              } else if (position == "center") {
                left = wrapperWidth / 2 - width / 2;
                top = wrapperHeight / 2 - height / 2;
                shadow = "0 0 20px rgba(0,0,0,0.08)";
              }
              left += offsetX;
              top += offsetY + -1;
              this.$refs.drawer.style.top = "".concat(top, "px");
              this.$refs.drawer.style.left = "".concat(left, "px");
              this.$refs.drawer.style.boxShadow = shadow;
              this.drawerVisible = true;
            },
            closeDrawer: function closeDrawer() {
              this.drawerVisible = false;
            },
            setAtUserList: function setAtUserList(data, callEvery) {
              this.$refs.editor.chatArea.updateConfig({
                userList: data,
                needCallEvery: callEvery,
              });
            },
            setUserTag: function setUserTag(data) {
              this.$refs.editor.chatArea.setUserTag(data);
              this.$refs.editor._checkSubmitDisabled();
            },
          },
        };
        // CONCATENATED MODULE: ./packages/components/index.vue?vue&type=script&lang=js
        /* harmony default export */ var packages_componentsvue_type_script_lang_js =
          componentsvue_type_script_lang_js;
        // EXTERNAL MODULE: ./packages/components/index.vue?vue&type=style&index=0&id=4b7eee71&prod&lang=stylus
        var componentsvue_type_style_index_0_id_4b7eee71_prod_lang_stylus =
          __webpack_require__("b25a");

        // CONCATENATED MODULE: ./packages/components/index.vue
        var components_render, components_staticRenderFns;

        /* normalize component */

        var components_component = normalizeComponent(
          packages_componentsvue_type_script_lang_js,
          components_render,
          components_staticRenderFns,
          false,
          null,
          null,
          null
        );

        /* harmony default export */ var components =
          components_component.exports;
        // EXTERNAL MODULE: ./packages/styles/common/index.styl
        var common = __webpack_require__("6a2b");

        // CONCATENATED MODULE: ./packages/index.js

        var version = "1.4.2";
        var packages_components = [
          components,
          components_contact,
          messages,
          editor,
          avatar,
          badge,
          components_button,
          popover,
          tabs,
          basic,
          message_text,
          message_image,
          file,
          message_event,
        ];
        var packages_install = function install(Vue) {
          Vue.directive("LemonContextmenu", contextmenu);
          packages_components.forEach(function (component) {
            Vue.component(component.name, component);
          });
        };
        if (typeof window !== "undefined" && window.Vue) {
          packages_install(window.Vue);
        }
        /* harmony default export */ var packages_0 = {
          version: version,
          install: packages_install,
        };
        // CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js

        /* harmony default export */ var entry_lib = (__webpack_exports__[
          "default"
        ] = packages_0);

        /***/
      },

      /***/ fdef: /***/ function (module, exports) {
        module.exports =
          "\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003" +
          "\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF";

        /***/
      },

      /******/
    }
  );
});
